Skip to content

Commit afe309f

Browse files
author
YH.Wang
committed
1.3.1 change demo code node name to unique, some parameters value and update the README.md
1 parent 37a2f5a commit afe309f

File tree

164 files changed

+96
-112
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

164 files changed

+96
-112
lines changed

.gitignore

100644100755
File mode changed.

LICENSE

100644100755
File mode changed.

README.md

100644100755
+76-92
Original file line numberDiff line numberDiff line change
@@ -10,38 +10,36 @@ This driver is for ROS2 Foxy version.
1010

1111
If you want to use Dashing version, please go to our [Dashing version driver](https://github.com/TechmanRobotInc/tmr_ros2/tree/dashing-devel).
1212

13-
If you want to know how to use this driver, please go to our [TM ROS1 driver](https://github.com/TechmanRobotInc/tmr_ros1)
13+
If you want to know how to use this driver, please go to [TM ROS1 driver](https://github.com/TechmanRobotInc/tmr_ros1).
1414

1515
### __ROS2 Driver__
1616

1717
The driver for ROS2 publishes identical topics and provides identical services as ROS1 version, but for now there is no interface integration with MoveIt.
18-
This driver uses _ros2 composition_, there are two nodes in the identical process:
18+
This driver uses _ROS2 composition_, there are two nodes in the identical process:
1919
one node publishes topics while the other node sets up service servers.
2020

21-
> __Usage__
21+
> __ROS2 driver usage__
22+
23+
> If you have set up the ROS2 environment and TM driver build based on a specific workspace, then type in your workspace`<workspace>` by starting a terminal, and remember to make the workspace visible to ROS.
24+
>
25+
> ```bash
26+
> source /opt/ros/foxy/setup.bash
27+
> cd <workspace>
28+
> source ./install/setup.bash
29+
> ```
2230
2331
24-
>For example, execute the launch script to enable the driver to connect to tm5-900 robot
32+
>Then, run the driver to connect to TM robot by type
2533
>
2634
>```bash
27-
>ros2 launch tm_driver tm5_900_bringup.py >robot_ip:=YOUR_ROBOT_IP_ADDRESS
35+
>ros2 run tm_driver tm_driver <robot_ip>
2836
>```
2937
>
3038
> __Techman robot vision__
3139
>
3240
> - type: sensor_msgs::msg::Image
3341
> - message name: techman_image
3442
35-
### __Installation__
36-
37-
> __Building from source__
38-
>
39-
> 1. install ROS and dependency :
40-
__for ROS2 :__
41-
install ROS2 (dashing)
42-
install ros-dashing-ros1-bridge
43-
> 2. create workspace and clone package folder into _${WORKSPACE}/src_
44-
> 3. ```catkin_make```
4543
4644
## __3. Usage__
4745
@@ -129,28 +127,8 @@ Click on the __Data Table Setting__ button and check the following boxes:
129127
> 8. Finally, assign a name to the model in the __Model name__ blank text and click the __Save__ button.
130128
> ![save_model](figures/save_model.png)
131129
132-
### __TM ROS driver usage__
133130
134-
> Change the current working directory of the terminal to your workspace`<workspace>`and set up the environment.
135-
>
136-
> ```bash
137-
> cd <workspace>
138-
> source devel/setup.bash
139-
> ```
140-
>
141-
> Manipulate the virtual TM robot:
142-
>
143-
> ```bash
144-
> roslaunch tm5_900_moveit_config tm5_900_moveit_planning_execution.launch sim:=True
145-
> ```
146-
>
147-
> You can also manipulate TM robot in the real world:
148-
>
149-
> ```bash
150-
> roslaunch tm5_900_moveit_config tm5_900_moveit_planning_execution.launch sim:=False robot_ip:=<robot_ip>
151-
> ```
152-
>
153-
> The parameter `<robot_ip>` means the IP address of the robot control pc.
131+
154132
155133
## __4. Vision__
156134
@@ -168,20 +146,14 @@ Click on the __Data Table Setting__ button and check the following boxes:
168146
> 4. waitress
169147
> 5. datetime
170148
>
171-
> __Installation__
172-
>
173-
> Create a dictionary and downlaod the repository.
174-
>
175-
>```bash
176-
> mkdir ~/techman_ros2
177-
> cd ~/techman_ros2
178-
> colon build
179-
> ```
180149
>
150+
181151
> __The Techman Robot ROS2 node which publishes image data__
152+
153+
> Under all environment settings have been finished with your workspace`<workspace>`, then type
182154
>
183155
> ```bash
184-
> cd ~/techman_ros2 && source install/setup.bash
156+
> cd ~/workspace && source install/setup.bash
185157
> ros2 run tm_get_status image_talker
186158
> ```
187159
>
@@ -193,8 +165,8 @@ Click on the __Data Table Setting__ button and check the following boxes:
193165
>
194166
> The viewer will display image data from _TMFlow_.
195167
196-
## __3. Demo code__
197-
There are some demo codes to show how to use this driver.
168+
## __5. Code of Demo__
169+
There are some demo codes showing how to use this driver.
198170
199171
> 1. demo_send_script:<br/>
200172
In this demo code, it shows how to send a listen node script to control the robot. <br/>
@@ -203,78 +175,90 @@ You can use service named "send_script" to send script.<br/>
203175
"script"-> the script which you want to send.<br/>
204176
"ok" -> Correctness of the script.
205177
> 2. demo_ask_item:<br/>
206-
In this demo code, you can send TMSCT cmd by using this service. More details please refer to the Expression Editor and Listen Node.pdf(Chapter TMSCT<br/>
178+
In this demo code, you can use this service to send TMSCT cmd. More details please refer to the Expression Editor and Listen Node.pdf(Chapter7.4 TMSCT)<br/>
207179
> 3. demo_ask_sta:<br/>
208-
In this demo code, you can send TMSTA cmd by using this service. More details please refer to the Expression Editor and Listen Node.pdf(Chapter TMSTA<br/>
180+
In this demo code, you can use this service to send TMSTA cmd. More details please refer to the Expression Editor and Listen Node.pdf(Chapter7.5 TMSTA)<br/>
209181
> 4. demo_connect_tm:<br/>
210-
In this demo code, you can set connection. <br/>
182+
In this demo code, you can set the connection type. <br/>
211183
If you set to reconnect as true, every time when driver disconnects from listen node, it will try to re-connect it.<br/>
212-
There are two topics you can use, one is "connect_tmsvr" which is setting ethercad server connection, and the other is "connect_tmsct" which is setting TM-Flow connection.<br/>
184+
There are two kind connection settings you can select, one is "connect_tmsvr" for EtherCAT server connection, and the other is "connect_tmsct" for setting TM-Flow connection.<br/>
213185
> 5. demo_set_event:<br/>
214-
In this demo code, there are six types of events you can use.<br/>
215-
func: You can use TAG, WAIT_TAG, STOP, PAUSE, RESUME and EXIT<br/>
216-
arg0: if fun is TAG or WAIT_TAG, arg0 is timeout in ms<br/>
217-
arg1: if fun is TAG or WAIT_TAG, arg1 is id<br/>
186+
In this demo code, six event types can be selected.<br/>
187+
func: TAG, WAIT_TAG, STOP, PAUSE, RESUME and EXIT<br/>
188+
arg0: if func is TAG or WAIT_TAG, arg0 is timeout in ms<br/>
189+
arg1: if func is TAG or WAIT_TAG, arg1 is id<br/>
218190
> 6. demo_set_io:<br/>
219-
In this demo code, you should set module, type, pin and state.More details please refer to the Expression Editor and Listen Node.pdf(Chapter IO<br/>
191+
In this demo code, you should set module, type, pin and state. More details please refer to the Expression Editor and Listen Node.pdf(Chapter6.5 IO)<br/>
220192
module : MODULE_CONTROLBOX or MODULE_ENDEFFECTOR<br/>
221193
type: TYPE_DIGITAL_IN, TYPE_DIGITAL_OUT, TYPE_INSTANT_DO, TYPE_ANALOG_IN, TYPE_ANALOG_OUT, TYPE_INSTANT_AO<br/>
222194
pin: pin number<br/>
223195
state: STATE_OFF or STATE_ON or other value(if digitial IO)<br/>
224196
> 7. demo_set_positions:<br/>
225-
In this demo, you should be careful all units are not degree, they are rad.<br/>
226-
motion_type : PTP_J , PTP_T , LINE_J , LINE_T , CIRC_J ,CIRC_T , PLINE_J ,PLINE_T. More details please refer to the Expression Editor and Listen Node.pdf(Chapter PTP, Line, Circle, Pline, Move_PTP, Move_Line, Move_PLine) <br/>
197+
In this demo, you should be careful with parameter units to operation.<br/>
198+
motion_type : PTP_J , PTP_T , LINE_J , LINE_T , CIRC_J ,CIRC_T , PLINE_J ,PLINE_T. More details please refer to the Expression Editor and Listen Node.pdf(Chapter8 PTP, Line, Circle, Pline, Move_PTP, Move_Line, Move_PLine) <br/>
227199
positions : target position or target joint(rad)<br/>
228200
velocity : joint velocity-> max value is Pi -> 3.14 rad/s , line velocity ->m/s <br/>
229201
acc_time : to max speed time in millisecond<br/>
230202
blend_percentage : 0 has no blending
231-
fine_goal : in true case, controller will check the error of the final position and you should wait few ms<br/>
203+
fine_goal : In a real situation, the controller will check the erro of the final position and should wait a few milliseconds.<br/>
232204
> 8. demo_write_item: <br/>
233-
In this demo code, you can send TMSVR cmd by using this service. More details please refer to the Expression Editor and Listen Node.pdf(Chapter svr_write
205+
In this demo code, you can use this service to send TMSVR cmd. More details please refer to the Expression Editor and Listen Node.pdf(Chapter9.3 svr_write())
234206
> 9. demo_leave_listen_node:<br/>
235207
In this demo code, you can use send_script service sending a script to leave the listen node.
236208
237-
## How to use demo code & driver
238-
1. Create a folder ``~/tm_driver`` by type<br/>
239-
``mkdir ~/tm_driver``<br/>
240-
``cd ~/tm_driver``
241-
2. Download this package by using git and change into dashing branch<br/>
209+
## Usage with demo code & driver
210+
> Note: If you have even successfully built a specific code(tmr_ros2), you only need to change to the TM driver workspace path ``cd ~/tmdriver_ws`` , and then directly refer to steps 5~6 below. <br/>
211+
> 1. Type to create a root workspace directory by starting a terminal: For example, ``tmdriver_ws`` or ``catkin_ws``, then type to change current directory into the workspace directory path.<br/>
212+
``mkdir ~/tmdriver_ws``<br/>
213+
``cd ~/tmdriver_ws``<br/>
214+
> 2. Clone the the TM driver of git repository into the current directory by typing<br/>
242215
``git clone https://github.com/TechmanRobotInc/tmr_ros2.git``<br/>
243-
``git checkout dashing-devel``<br/>l
244-
3. Build the source code and set the path<br/>
216+
> 3. After the download done, rename the download folder ``tmr_ros2``(or ``tmr_ros2-master``) to ``src`` by typing<br/>
217+
``mv tmr_ros2 src``<br/> (or right-click on the download folder, select "Rename...")<br/>
218+
> 4. At the workspace directory to build the download packages and source 'setup.bash' in this workspace to make the worksapce visible to ROS.<br/>
219+
Note: Do you set ``source /opt/ros/foxy/setup.bash`` ready? If check ok, then type below.<br/>
245220
``colcon build``<br/>
246221
``source ./install/setup.bash``<br/>
247-
4. Open a terminal and type<br/>
222+
> 5. In a new terminal: Source setup.bash in the workspace path and run the driver to connect to TM robot by typing<br/>
223+
``source ./install/setup.bash``<br/>
248224
``ros2 run tm_driver tm_driver <robot_ip>``<br/>
249-
<robot_ip> is tm robot ip address, you can get it by TM Flow, for example 192.168.10.2
250-
5. Open another terminal and type which demo you want to try.
251-
For example you want to try demo_set_io, you can type<br/>
225+
The <robot_ip> is the IP address of the TM robot, you can get it through TM Flow, for example 192.168.10.2<br/>
226+
> 6. In another new terminal: Source setup.bash in the workspace path and type specific demo node function which you want to study for applications. For example: you select to run demo_set_io, you can type<br/>
227+
``source ./install/setup.bash``<br/>
252228
``ros2 run demo demo_set_io``<br/>
253-
:warning: Some demos will let the robot move, please be careful.
229+
>[CAUTION]:warning: Some demos will let the robot move, please be careful.<br/>
254230
255-
## GUI debug and demo
256-
This GUI shows up tm_driver connection status, sct sta svr messages and robot status. You can use this GUI to check driver and robot connect status and send re-connect command and base on this GUI to modify.
257231
258-
### How to use it
259-
1. Create a folder ``~/tm_driver`` by type<br/>
260-
``mkdir ~/tm_driver``<br/>
261-
``cd ~/tm_driver``
262-
2. Download this package by using git<br/>
232+
## TM GUI debugging and demonstration
233+
The GUI displays tm_driver connection status, sct, sta, svr messages and robot status. Easily judge the message between the driver and the robot through the GUI display. If the connection fails, you can also try to send a reconnect command on this GUI for debugging.
234+
235+
### Usage with TM GUI debugging
236+
> Note: If you have even successfully built a specific code(tmr_ros2), you only need to change to the TM driver workspace path ``cd ~/tmdriver_ws`` , and then directly refer to steps 5~6 below. <br/>
237+
> 1. Type to create a root workspace directory by starting a terminal: For example, ``tmdriver_ws`` or ``catkin_ws``, then type to change current directory into the workspace directory path.<br/>
238+
``mkdir ~/tmdriver_ws``<br/>
239+
``cd ~/tmdriver_ws``
240+
> 2. Clone the the TM driver of git repository into the current directory by typing<br/>
263241
``git clone https://github.com/TechmanRobotInc/tmr_ros2.git``<br/>
264-
3. Build the source code and set the path<br/>
242+
> 3. After the download done, rename the download folder ``tmr_ros2``(or ``tmr_ros2-master``) to ``src`` by typing<br/>
243+
``mv tmr_ros2 src``<br/> (or right-click on the download folder, select "Rename...")<br/>
244+
> 4. At the workspace directory to build the download packages and source 'setup.bash' in this workspace to make the worksapce visible to ROS.<br/>
245+
Note: Do you set ``source /opt/ros/foxy/setup.bash`` ready? If cehck ok, then type below.<br/>
265246
``colcon build``<br/>
266247
``source ./install/setup.bash``<br/>
267-
4. Open a terminal and type<br/>
248+
> 5. In a new terminal: Source setup.bash in the workspace path and run the driver to connect to TM robot by typing<br/>
249+
``source ./install/setup.bash``<br/>
268250
``ros2 run tm_driver tm_driver <robot_ip>``<br/>
269-
<robot_ip> is tm robot ip address, you can get it by TM Flow, for example 192.168.10.2
270-
5. Open another terminal and type<br/>
251+
The <robot_ip> is the IP address of the TM robot, you can get it through TM Flow, for example 192.168.10.2
252+
> 6. In another new terminal: Source setup.bash in the workspace path and start GUI debug by typing<br/>
253+
``source ./install/setup.bash``<br/>
271254
``ros2 run ui_for_debug_and_demo robot_ui``<br/>
272255
273-
### UI description
274-
1. When ``is_srv_connect`` and ``is_sct_connect`` are true, it means the all connection is success.
275-
2. If ``is_srv_connect`` is false, you should check the data table is correct or not.
276-
3. If ``is_sct_connect`` is false, you should check whether you run the project or not.
277-
4. If ``is_srv_connect`` and ``is_sct_connect`` are true, but ``robot link`` is false. It means you connect the TM project, but you are not in listen node, so you when you send the move command, it doesn't work.
278-
5. When you send a command or click ``"change control box IO"``, you can see ``"Robot Response"`` add a response item, the item details you can reference ``SctResponse.msg``, ``StaResponse.msg`` and ``SvrResponse.msg``.
279-
6. You can click ``"clear"`` to clear the old response items.
280-
7. If you didn't open the ``tm_ros_driver``, you will see all items show ``"Not ini"``.
256+
257+
### Debugging description
258+
> * If ``is_srv_connect`` and ``is_sct_connect`` are true, it means that all connection is success.<br/>
259+
> * If ``is_srv_connect`` is false, you should check whether the data table is correct.<br/>
260+
> * If ``is_sct_connect`` is false, you should check whether the project is running.<br/>
261+
> * If ``is_srv_connect`` and ``is_sct_connect`` are true, and the ``robot link`` is false, it means that the driver has connected to the TM project, but the TMFlow listen node is set to abnormal. Therefore, when you send the move command, it does not work.<br/>
262+
> * When you send a command or click ``"change control box IO"``, you will see a response item embedded in the ``Robot Response``. For details of this item, please refer to ``SctResponse.msg``, ``StaResponse.msg`` and ``SvrResponse.msg``.<br/>
263+
> * You can click ``"clear"`` to clear the old response items.<br/>
264+
> * If you forget to run the ``tm_ros_driver``, you will see all items displayed as ``"Not ini"``.<br/>

custom_package/CMakeLists.txt

100644100755
File mode changed.

custom_package/image/techman_robot.jpg

100644100755
File mode changed.

custom_package/package.xml

100644100755
File mode changed.

custom_package/src/send_command.cpp

100644100755
File mode changed.

custom_package/src/sub_img.cpp

100644100755
File mode changed.

demo/get_status_demo_src/demo_get_feedback.cpp

100644100755
+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class MinimalSubscriber : public rclcpp::Node
88
{
99
public:
1010
MinimalSubscriber()
11-
: Node("tm_feedback_state")
11+
: Node("demo_get_feedback")
1212
{
1313
subscription_ = this->create_subscription<tm_msgs::msg::FeedbackState>(
1414
"feedback_states", 10, std::bind(&MinimalSubscriber::topic_callback, this, _1));
@@ -34,4 +34,4 @@ int main(int argc, char * argv[])
3434
rclcpp::spin(std::make_shared<MinimalSubscriber>());
3535
rclcpp::shutdown();
3636
return 0;
37-
}
37+
}

demo/get_status_demo_src/demo_get_sct_response.cpp

100644100755
+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class MinimalSubscriber : public rclcpp::Node
88
{
99
public:
1010
MinimalSubscriber()
11-
: Node("tm_sct_response")
11+
: Node("demo_get_sct_response")
1212
{
1313
subscription_ = this->create_subscription<tm_msgs::msg::SctResponse>(
1414
"sct_response", 10, std::bind(&MinimalSubscriber::topic_callback, this, _1));
@@ -32,4 +32,4 @@ int main(int argc, char * argv[])
3232
rclcpp::spin(std::make_shared<MinimalSubscriber>());
3333
rclcpp::shutdown();
3434
return 0;
35-
}
35+
}

demo/get_status_demo_src/demo_get_sta_response.cpp

100644100755
+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class MinimalSubscriber : public rclcpp::Node
88
{
99
public:
1010
MinimalSubscriber()
11-
: Node("tm_sta_response")
11+
: Node("demo_get_sta_response")
1212
{
1313
subscription_ = this->create_subscription<tm_msgs::msg::StaResponse>(
1414
"sta_response", 10, std::bind(&MinimalSubscriber::topic_callback, this, _1));
@@ -32,4 +32,4 @@ int main(int argc, char * argv[])
3232
rclcpp::spin(std::make_shared<MinimalSubscriber>());
3333
rclcpp::shutdown();
3434
return 0;
35-
}
35+
}

demo/get_status_demo_src/demo_get_svr_response.cpp

100644100755
+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class MinimalSubscriber : public rclcpp::Node
88
{
99
public:
1010
MinimalSubscriber()
11-
: Node("tm_feedback_state")
11+
: Node("demo_get_svr_response")
1212
{
1313
subscription_ = this->create_subscription<tm_msgs::msg::SvrResponse>(
1414
"svr_response", 10, std::bind(&MinimalSubscriber::topic_callback, this, _1));
@@ -32,4 +32,4 @@ int main(int argc, char * argv[])
3232
rclcpp::spin(std::make_shared<MinimalSubscriber>());
3333
rclcpp::shutdown();
3434
return 0;
35-
}
35+
}

demo/src/demo_ask_item.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ int main(int argc, char **argv)
1313
rclcpp::init(argc, argv);
1414

1515

16-
std::shared_ptr<rclcpp::Node> node = rclcpp::Node::make_shared("ask_item_node");
16+
std::shared_ptr<rclcpp::Node> node = rclcpp::Node::make_shared("demo_ask_item");
1717
rclcpp::Client<tm_msgs::srv::AskItem>::SharedPtr client =
1818
node->create_client<tm_msgs::srv::AskItem>("ask_item");
1919
auto request = std::make_shared<tm_msgs::srv::AskItem::Request>();
2020
request->id = "demo";
2121
request->item = "HandCamera_Value";
22-
request->wait_time = 0;
22+
request->wait_time = 1;
2323

2424
while (!client->wait_for_service(1s)) {
2525
if (!rclcpp::ok()) {

demo/src/demo_ask_sta.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ int main(int argc, char **argv)
1313
rclcpp::init(argc, argv);
1414

1515

16-
std::shared_ptr<rclcpp::Node> node = rclcpp::Node::make_shared("demo_node");
16+
std::shared_ptr<rclcpp::Node> node = rclcpp::Node::make_shared("demo_ask_sta");
1717
rclcpp::Client<tm_msgs::srv::AskSta>::SharedPtr client =
1818
node->create_client<tm_msgs::srv::AskSta>("ask_sta");
1919

2020
auto request = std::make_shared<tm_msgs::srv::AskSta::Request>();
2121
request->subcmd = "00";
2222
request->subdata = "";
23-
request->wait_time = 0;
23+
request->wait_time = 1;
2424

2525
while (!client->wait_for_service(1s)) {
2626
if (!rclcpp::ok()) {

demo/src/demo_connect_tm.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ int main(int argc, char **argv)
1212
rclcpp::init(argc, argv);
1313

1414

15-
std::shared_ptr<rclcpp::Node> node = rclcpp::Node::make_shared("demo_node");
15+
std::shared_ptr<rclcpp::Node> node = rclcpp::Node::make_shared("demo_connect_tm");
1616
rclcpp::Client<tm_msgs::srv::ConnectTM>::SharedPtr client =
1717
node->create_client<tm_msgs::srv::ConnectTM>("connect_tmsvr");
1818

demo/src/demo_leave_listen_node.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ int main(int argc, char **argv)
4343
rclcpp::init(argc, argv);
4444

4545

46-
std::shared_ptr<rclcpp::Node> node = rclcpp::Node::make_shared("demo_node");
46+
std::shared_ptr<rclcpp::Node> node = rclcpp::Node::make_shared("demo_leave_listen_node");
4747
rclcpp::Client<tm_msgs::srv::SendScript>::SharedPtr client =
4848
node->create_client<tm_msgs::srv::SendScript>("send_script");
4949

@@ -53,4 +53,4 @@ int main(int argc, char **argv)
5353

5454
rclcpp::shutdown();
5555
return 0;
56-
}
56+
}

demo/src/demo_send_script.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ int main(int argc, char **argv)
4343
rclcpp::init(argc, argv);
4444

4545

46-
std::shared_ptr<rclcpp::Node> node = rclcpp::Node::make_shared("demo_node");
46+
std::shared_ptr<rclcpp::Node> node = rclcpp::Node::make_shared("demo_send_script");
4747
rclcpp::Client<tm_msgs::srv::SendScript>::SharedPtr client =
4848
node->create_client<tm_msgs::srv::SendScript>("send_script");
4949

demo/src/demo_set_event.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ int main(int argc, char **argv)
1212
rclcpp::init(argc, argv);
1313

1414

15-
std::shared_ptr<rclcpp::Node> node = rclcpp::Node::make_shared("demo_node");
15+
std::shared_ptr<rclcpp::Node> node = rclcpp::Node::make_shared("demo_set_event");
1616
rclcpp::Client<tm_msgs::srv::SetEvent>::SharedPtr client =
1717
node->create_client<tm_msgs::srv::SetEvent>("set_event");
1818

0 commit comments

Comments
 (0)