diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 index 2ed004968..a0a6f604d --- a/README.md +++ b/README.md @@ -10,21 +10,29 @@ This driver is for ROS2 Foxy version. If you want to use Dashing version, please go to our [Dashing version driver](https://github.com/TechmanRobotInc/tmr_ros2/tree/dashing-devel). -If you want to know how to use this driver, please go to our [TM ROS1 driver](https://github.com/TechmanRobotInc/tmr_ros1) +If you want to know how to use this driver, please go to [TM ROS1 driver](https://github.com/TechmanRobotInc/tmr_ros1). ### __ROS2 Driver__ The driver for ROS2 publishes identical topics and provides identical services as ROS1 version, but for now there is no interface integration with MoveIt. -This driver uses _ros2 composition_, there are two nodes in the identical process: +This driver uses _ROS2 composition_, there are two nodes in the identical process: one node publishes topics while the other node sets up service servers. -> __Usage__ +> __ROS2 driver usage__ + +> If you have set up the ROS2 environment and TM driver build based on a specific workspace, then type in your workspace`` by starting a terminal, and remember to make the workspace visible to ROS. +> +> ```bash +> source /opt/ros/foxy/setup.bash +> cd +> source ./install/setup.bash +> ``` ->For example, execute the launch script to enable the driver to connect to tm5-900 robot +>Then, run the driver to connect to TM robot by type > >```bash ->ros2 launch tm_driver tm5_900_bringup.py >robot_ip:=YOUR_ROBOT_IP_ADDRESS +>ros2 run tm_driver tm_driver >``` > > __Techman robot vision__ @@ -32,16 +40,6 @@ one node publishes topics while the other node sets up service servers. > - type: sensor_msgs::msg::Image > - message name: techman_image -### __Installation__ - -> __Building from source__ -> -> 1. install ROS and dependency : -__for ROS2 :__ -install ROS2 (dashing) -install ros-dashing-ros1-bridge -> 2. create workspace and clone package folder into _${WORKSPACE}/src_ -> 3. ```catkin_make``` ## __3. Usage__ @@ -129,28 +127,8 @@ Click on the __Data Table Setting__ button and check the following boxes: > 8. Finally, assign a name to the model in the __Model name__ blank text and click the __Save__ button. > ![save_model](figures/save_model.png) -### __TM ROS driver usage__ -> Change the current working directory of the terminal to your workspace``and set up the environment. -> -> ```bash -> cd -> source devel/setup.bash -> ``` -> -> Manipulate the virtual TM robot: -> -> ```bash -> roslaunch tm5_900_moveit_config tm5_900_moveit_planning_execution.launch sim:=True -> ``` -> -> You can also manipulate TM robot in the real world: -> -> ```bash -> roslaunch tm5_900_moveit_config tm5_900_moveit_planning_execution.launch sim:=False robot_ip:= -> ``` -> -> The parameter `` means the IP address of the robot control pc. + ## __4. Vision__ @@ -168,20 +146,14 @@ Click on the __Data Table Setting__ button and check the following boxes: > 4. waitress > 5. datetime > -> __Installation__ -> -> Create a dictionary and downlaod the repository. -> ->```bash -> mkdir ~/techman_ros2 -> cd ~/techman_ros2 -> colon build -> ``` > + > __The Techman Robot ROS2 node which publishes image data__ + +> Under all environment settings have been finished with your workspace``, then type > > ```bash -> cd ~/techman_ros2 && source install/setup.bash +> cd ~/workspace && source install/setup.bash > ros2 run tm_get_status image_talker > ``` > @@ -193,8 +165,8 @@ Click on the __Data Table Setting__ button and check the following boxes: > > The viewer will display image data from _TMFlow_. -## __3. Demo code__ -There are some demo codes to show how to use this driver. +## __5. Code of Demo__ +There are some demo codes showing how to use this driver. > 1. demo_send_script:
In this demo code, it shows how to send a listen node script to control the robot.
@@ -203,78 +175,90 @@ You can use service named "send_script" to send script.
"script"-> the script which you want to send.
"ok" -> Correctness of the script. > 2. demo_ask_item:
-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
+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)
> 3. demo_ask_sta:
-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
+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)
> 4. demo_connect_tm:
-In this demo code, you can set connection.
+In this demo code, you can set the connection type.
If you set to reconnect as true, every time when driver disconnects from listen node, it will try to re-connect it.
-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.
+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.
> 5. demo_set_event:
-In this demo code, there are six types of events you can use.
-func: You can use TAG, WAIT_TAG, STOP, PAUSE, RESUME and EXIT
-arg0: if fun is TAG or WAIT_TAG, arg0 is timeout in ms
-arg1: if fun is TAG or WAIT_TAG, arg1 is id
+In this demo code, six event types can be selected.
+func: TAG, WAIT_TAG, STOP, PAUSE, RESUME and EXIT
+arg0: if func is TAG or WAIT_TAG, arg0 is timeout in ms
+arg1: if func is TAG or WAIT_TAG, arg1 is id
> 6. demo_set_io:
-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
+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)
module : MODULE_CONTROLBOX or MODULE_ENDEFFECTOR
type: TYPE_DIGITAL_IN, TYPE_DIGITAL_OUT, TYPE_INSTANT_DO, TYPE_ANALOG_IN, TYPE_ANALOG_OUT, TYPE_INSTANT_AO
pin: pin number
state: STATE_OFF or STATE_ON or other value(if digitial IO)
> 7. demo_set_positions:
-In this demo, you should be careful all units are not degree, they are rad.
-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)
+In this demo, you should be careful with parameter units to operation.
+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)
positions : target position or target joint(rad)
velocity : joint velocity-> max value is Pi -> 3.14 rad/s , line velocity ->m/s
acc_time : to max speed time in millisecond
blend_percentage : 0 has no blending -fine_goal : in true case, controller will check the error of the final position and you should wait few ms
+fine_goal : In a real situation, the controller will check the erro of the final position and should wait a few milliseconds.
> 8. demo_write_item:
-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 +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()) > 9. demo_leave_listen_node:
In this demo code, you can use send_script service sending a script to leave the listen node. -## How to use demo code & driver -1. Create a folder ``~/tm_driver`` by type
-``mkdir ~/tm_driver``
-``cd ~/tm_driver`` -2. Download this package by using git and change into dashing branch
+## Usage with demo code & driver +> 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.
+> 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.
+``mkdir ~/tmdriver_ws``
+``cd ~/tmdriver_ws``
+> 2. Clone the the TM driver of git repository into the current directory by typing
``git clone https://github.com/TechmanRobotInc/tmr_ros2.git``
-``git checkout dashing-devel``
l -3. Build the source code and set the path
+> 3. After the download done, rename the download folder ``tmr_ros2``(or ``tmr_ros2-master``) to ``src`` by typing
+``mv tmr_ros2 src``
(or right-click on the download folder, select "Rename...")
+> 4. At the workspace directory to build the download packages and source 'setup.bash' in this workspace to make the worksapce visible to ROS.
+Note: Do you set ``source /opt/ros/foxy/setup.bash`` ready? If check ok, then type below.
``colcon build``
``source ./install/setup.bash``
-4. Open a terminal and type
+> 5. In a new terminal: Source setup.bash in the workspace path and run the driver to connect to TM robot by typing
+``source ./install/setup.bash``
``ros2 run tm_driver tm_driver ``
- is tm robot ip address, you can get it by TM Flow, for example 192.168.10.2 -5. Open another terminal and type which demo you want to try. -For example you want to try demo_set_io, you can type
+The is the IP address of the TM robot, you can get it through TM Flow, for example 192.168.10.2
+> 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
+``source ./install/setup.bash``
``ros2 run demo demo_set_io``
-:warning: Some demos will let the robot move, please be careful. +>[CAUTION]:warning: Some demos will let the robot move, please be careful.
-## GUI debug and demo -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. -### How to use it -1. Create a folder ``~/tm_driver`` by type
-``mkdir ~/tm_driver``
-``cd ~/tm_driver`` -2. Download this package by using git
+## TM GUI debugging and demonstration +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. + +### Usage with TM GUI debugging +> 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.
+> 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.
+``mkdir ~/tmdriver_ws``
+``cd ~/tmdriver_ws`` +> 2. Clone the the TM driver of git repository into the current directory by typing
``git clone https://github.com/TechmanRobotInc/tmr_ros2.git``
-3. Build the source code and set the path
+> 3. After the download done, rename the download folder ``tmr_ros2``(or ``tmr_ros2-master``) to ``src`` by typing
+``mv tmr_ros2 src``
(or right-click on the download folder, select "Rename...")
+> 4. At the workspace directory to build the download packages and source 'setup.bash' in this workspace to make the worksapce visible to ROS.
+Note: Do you set ``source /opt/ros/foxy/setup.bash`` ready? If cehck ok, then type below.
``colcon build``
``source ./install/setup.bash``
-4. Open a terminal and type
+> 5. In a new terminal: Source setup.bash in the workspace path and run the driver to connect to TM robot by typing
+``source ./install/setup.bash``
``ros2 run tm_driver tm_driver ``
- is tm robot ip address, you can get it by TM Flow, for example 192.168.10.2 -5. Open another terminal and type
+The is the IP address of the TM robot, you can get it through TM Flow, for example 192.168.10.2 +> 6. In another new terminal: Source setup.bash in the workspace path and start GUI debug by typing
+``source ./install/setup.bash``
``ros2 run ui_for_debug_and_demo robot_ui``
-### UI description -1. When ``is_srv_connect`` and ``is_sct_connect`` are true, it means the all connection is success. -2. If ``is_srv_connect`` is false, you should check the data table is correct or not. -3. If ``is_sct_connect`` is false, you should check whether you run the project or not. -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. -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``. -6. You can click ``"clear"`` to clear the old response items. -7. If you didn't open the ``tm_ros_driver``, you will see all items show ``"Not ini"``. \ No newline at end of file + +### Debugging description +> * If ``is_srv_connect`` and ``is_sct_connect`` are true, it means that all connection is success.
+> * If ``is_srv_connect`` is false, you should check whether the data table is correct.
+> * If ``is_sct_connect`` is false, you should check whether the project is running.
+> * 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.
+> * 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``.
+> * You can click ``"clear"`` to clear the old response items.
+> * If you forget to run the ``tm_ros_driver``, you will see all items displayed as ``"Not ini"``.
\ No newline at end of file diff --git a/custom_package/CMakeLists.txt b/custom_package/CMakeLists.txt old mode 100644 new mode 100755 diff --git a/custom_package/image/techman_robot.jpg b/custom_package/image/techman_robot.jpg old mode 100644 new mode 100755 diff --git a/custom_package/package.xml b/custom_package/package.xml old mode 100644 new mode 100755 diff --git a/custom_package/src/send_command.cpp b/custom_package/src/send_command.cpp old mode 100644 new mode 100755 diff --git a/custom_package/src/sub_img.cpp b/custom_package/src/sub_img.cpp old mode 100644 new mode 100755 diff --git a/demo/get_status_demo_src/demo_get_feedback.cpp b/demo/get_status_demo_src/demo_get_feedback.cpp old mode 100644 new mode 100755 index a4d50dc61..69f02fe90 --- a/demo/get_status_demo_src/demo_get_feedback.cpp +++ b/demo/get_status_demo_src/demo_get_feedback.cpp @@ -8,7 +8,7 @@ class MinimalSubscriber : public rclcpp::Node { public: MinimalSubscriber() - : Node("tm_feedback_state") + : Node("demo_get_feedback") { subscription_ = this->create_subscription( "feedback_states", 10, std::bind(&MinimalSubscriber::topic_callback, this, _1)); @@ -34,4 +34,4 @@ int main(int argc, char * argv[]) rclcpp::spin(std::make_shared()); rclcpp::shutdown(); return 0; -} \ No newline at end of file +} diff --git a/demo/get_status_demo_src/demo_get_sct_response.cpp b/demo/get_status_demo_src/demo_get_sct_response.cpp old mode 100644 new mode 100755 index 7a249311b..93c16259d --- a/demo/get_status_demo_src/demo_get_sct_response.cpp +++ b/demo/get_status_demo_src/demo_get_sct_response.cpp @@ -8,7 +8,7 @@ class MinimalSubscriber : public rclcpp::Node { public: MinimalSubscriber() - : Node("tm_sct_response") + : Node("demo_get_sct_response") { subscription_ = this->create_subscription( "sct_response", 10, std::bind(&MinimalSubscriber::topic_callback, this, _1)); @@ -32,4 +32,4 @@ int main(int argc, char * argv[]) rclcpp::spin(std::make_shared()); rclcpp::shutdown(); return 0; -} \ No newline at end of file +} diff --git a/demo/get_status_demo_src/demo_get_sta_response.cpp b/demo/get_status_demo_src/demo_get_sta_response.cpp old mode 100644 new mode 100755 index 1864b3522..ff8653696 --- a/demo/get_status_demo_src/demo_get_sta_response.cpp +++ b/demo/get_status_demo_src/demo_get_sta_response.cpp @@ -8,7 +8,7 @@ class MinimalSubscriber : public rclcpp::Node { public: MinimalSubscriber() - : Node("tm_sta_response") + : Node("demo_get_sta_response") { subscription_ = this->create_subscription( "sta_response", 10, std::bind(&MinimalSubscriber::topic_callback, this, _1)); @@ -32,4 +32,4 @@ int main(int argc, char * argv[]) rclcpp::spin(std::make_shared()); rclcpp::shutdown(); return 0; -} \ No newline at end of file +} diff --git a/demo/get_status_demo_src/demo_get_svr_response.cpp b/demo/get_status_demo_src/demo_get_svr_response.cpp old mode 100644 new mode 100755 index d507c792d..9db0f4ef6 --- a/demo/get_status_demo_src/demo_get_svr_response.cpp +++ b/demo/get_status_demo_src/demo_get_svr_response.cpp @@ -8,7 +8,7 @@ class MinimalSubscriber : public rclcpp::Node { public: MinimalSubscriber() - : Node("tm_feedback_state") + : Node("demo_get_svr_response") { subscription_ = this->create_subscription( "svr_response", 10, std::bind(&MinimalSubscriber::topic_callback, this, _1)); @@ -32,4 +32,4 @@ int main(int argc, char * argv[]) rclcpp::spin(std::make_shared()); rclcpp::shutdown(); return 0; -} \ No newline at end of file +} diff --git a/demo/src/demo_ask_item.cpp b/demo/src/demo_ask_item.cpp index 95bb59b7b..50cb63580 100755 --- a/demo/src/demo_ask_item.cpp +++ b/demo/src/demo_ask_item.cpp @@ -13,13 +13,13 @@ int main(int argc, char **argv) rclcpp::init(argc, argv); - std::shared_ptr node = rclcpp::Node::make_shared("ask_item_node"); + std::shared_ptr node = rclcpp::Node::make_shared("demo_ask_item"); rclcpp::Client::SharedPtr client = node->create_client("ask_item"); auto request = std::make_shared(); request->id = "demo"; request->item = "HandCamera_Value"; - request->wait_time = 0; + request->wait_time = 1; while (!client->wait_for_service(1s)) { if (!rclcpp::ok()) { diff --git a/demo/src/demo_ask_sta.cpp b/demo/src/demo_ask_sta.cpp index 717d15dbf..1159d1c95 100755 --- a/demo/src/demo_ask_sta.cpp +++ b/demo/src/demo_ask_sta.cpp @@ -13,14 +13,14 @@ int main(int argc, char **argv) rclcpp::init(argc, argv); - std::shared_ptr node = rclcpp::Node::make_shared("demo_node"); + std::shared_ptr node = rclcpp::Node::make_shared("demo_ask_sta"); rclcpp::Client::SharedPtr client = node->create_client("ask_sta"); auto request = std::make_shared(); request->subcmd = "00"; request->subdata = ""; - request->wait_time = 0; + request->wait_time = 1; while (!client->wait_for_service(1s)) { if (!rclcpp::ok()) { diff --git a/demo/src/demo_connect_tm.cpp b/demo/src/demo_connect_tm.cpp index a35911a92..a413eaec0 100755 --- a/demo/src/demo_connect_tm.cpp +++ b/demo/src/demo_connect_tm.cpp @@ -12,7 +12,7 @@ int main(int argc, char **argv) rclcpp::init(argc, argv); - std::shared_ptr node = rclcpp::Node::make_shared("demo_node"); + std::shared_ptr node = rclcpp::Node::make_shared("demo_connect_tm"); rclcpp::Client::SharedPtr client = node->create_client("connect_tmsvr"); diff --git a/demo/src/demo_leave_listen_node.cpp b/demo/src/demo_leave_listen_node.cpp index 88972fcbb..00c1e79d7 100755 --- a/demo/src/demo_leave_listen_node.cpp +++ b/demo/src/demo_leave_listen_node.cpp @@ -43,7 +43,7 @@ int main(int argc, char **argv) rclcpp::init(argc, argv); - std::shared_ptr node = rclcpp::Node::make_shared("demo_node"); + std::shared_ptr node = rclcpp::Node::make_shared("demo_leave_listen_node"); rclcpp::Client::SharedPtr client = node->create_client("send_script"); @@ -53,4 +53,4 @@ int main(int argc, char **argv) rclcpp::shutdown(); return 0; -} \ No newline at end of file +} diff --git a/demo/src/demo_send_script.cpp b/demo/src/demo_send_script.cpp index 61b939d81..87cb38b54 100755 --- a/demo/src/demo_send_script.cpp +++ b/demo/src/demo_send_script.cpp @@ -43,7 +43,7 @@ int main(int argc, char **argv) rclcpp::init(argc, argv); - std::shared_ptr node = rclcpp::Node::make_shared("demo_node"); + std::shared_ptr node = rclcpp::Node::make_shared("demo_send_script"); rclcpp::Client::SharedPtr client = node->create_client("send_script"); diff --git a/demo/src/demo_set_event.cpp b/demo/src/demo_set_event.cpp index 8f38a403e..db28fe507 100755 --- a/demo/src/demo_set_event.cpp +++ b/demo/src/demo_set_event.cpp @@ -12,7 +12,7 @@ int main(int argc, char **argv) rclcpp::init(argc, argv); - std::shared_ptr node = rclcpp::Node::make_shared("demo_node"); + std::shared_ptr node = rclcpp::Node::make_shared("demo_set_event"); rclcpp::Client::SharedPtr client = node->create_client("set_event"); diff --git a/demo/src/demo_set_io.cpp b/demo/src/demo_set_io.cpp index 92a889716..ae6138e8c 100755 --- a/demo/src/demo_set_io.cpp +++ b/demo/src/demo_set_io.cpp @@ -12,7 +12,7 @@ int main(int argc, char **argv) rclcpp::init(argc, argv); - std::shared_ptr node = rclcpp::Node::make_shared("demo_node"); + std::shared_ptr node = rclcpp::Node::make_shared("demo_set_io"); rclcpp::Client::SharedPtr client = node->create_client("set_io"); diff --git a/demo/src/demo_set_positions.cpp b/demo/src/demo_set_positions.cpp index 9d978d9ae..bdc9dfe4d 100755 --- a/demo/src/demo_set_positions.cpp +++ b/demo/src/demo_set_positions.cpp @@ -12,7 +12,7 @@ int main(int argc, char **argv) rclcpp::init(argc, argv); - std::shared_ptr node = rclcpp::Node::make_shared("demo_node"); + std::shared_ptr node = rclcpp::Node::make_shared("demo_set_positions"); rclcpp::Client::SharedPtr client = node->create_client("set_positions"); diff --git a/demo/src/demo_write_item.cpp b/demo/src/demo_write_item.cpp index 2ecb8bf23..78ec0fef5 100755 --- a/demo/src/demo_write_item.cpp +++ b/demo/src/demo_write_item.cpp @@ -12,7 +12,7 @@ int main(int argc, char **argv) rclcpp::init(argc, argv); - std::shared_ptr node = rclcpp::Node::make_shared("demo_node"); + std::shared_ptr node = rclcpp::Node::make_shared("demo_write_item"); rclcpp::Client::SharedPtr client = node->create_client("write_item"); diff --git a/figures/1.png b/figures/1.png old mode 100644 new mode 100755 diff --git a/figures/2.png b/figures/2.png old mode 100644 new mode 100755 diff --git a/figures/3.png b/figures/3.png old mode 100644 new mode 100755 diff --git a/figures/Thumbs.db b/figures/Thumbs.db old mode 100644 new mode 100755 diff --git a/figures/add_model.png b/figures/add_model.png old mode 100644 new mode 100755 diff --git a/figures/change1.png b/figures/change1.png old mode 100644 new mode 100755 diff --git a/figures/change2.png b/figures/change2.png old mode 100644 new mode 100755 diff --git a/figures/check_connect_success.png b/figures/check_connect_success.png old mode 100644 new mode 100755 diff --git a/figures/choose_add_parameters.png b/figures/choose_add_parameters.png old mode 100644 new mode 100755 diff --git a/figures/choose_ai_detection_only.png b/figures/choose_ai_detection_only.png old mode 100644 new mode 100755 diff --git a/figures/choose_aoi_only.png b/figures/choose_aoi_only.png old mode 100644 new mode 100755 diff --git a/figures/open_need_dongle_key.png b/figures/open_need_dongle_key.png old mode 100644 new mode 100755 diff --git a/figures/open_visiob_thread.png b/figures/open_visiob_thread.png old mode 100644 new mode 100755 diff --git a/figures/save_model.png b/figures/save_model.png old mode 100644 new mode 100755 diff --git a/figures/select_find.png b/figures/select_find.png old mode 100644 new mode 100755 diff --git a/figures/wrong_ip_address.png b/figures/wrong_ip_address.png old mode 100644 new mode 100755 diff --git a/figures/wrong_port.png b/figures/wrong_port.png old mode 100644 new mode 100755 diff --git a/techman_robot_get_status/package.xml b/techman_robot_get_status/package.xml old mode 100644 new mode 100755 diff --git a/techman_robot_get_status/resource/tm_get_status b/techman_robot_get_status/resource/tm_get_status old mode 100644 new mode 100755 diff --git a/techman_robot_get_status/setup.cfg b/techman_robot_get_status/setup.cfg old mode 100644 new mode 100755 diff --git a/techman_robot_get_status/setup.py b/techman_robot_get_status/setup.py old mode 100644 new mode 100755 diff --git a/techman_robot_get_status/tm_get_status/__init__.py b/techman_robot_get_status/tm_get_status/__init__.py old mode 100644 new mode 100755 diff --git a/techman_robot_get_status/tm_get_status/get_status.py b/techman_robot_get_status/tm_get_status/get_status.py old mode 100644 new mode 100755 diff --git a/techman_robot_get_status/tm_get_status/image_pub.py b/techman_robot_get_status/tm_get_status/image_pub.py old mode 100644 new mode 100755 diff --git a/techman_robot_get_status/tm_get_status/translate_jason_to_list.py b/techman_robot_get_status/tm_get_status/translate_jason_to_list.py old mode 100644 new mode 100755 diff --git a/techman_robot_msgs/CMakeLists.txt b/techman_robot_msgs/CMakeLists.txt old mode 100644 new mode 100755 diff --git a/techman_robot_msgs/package.xml b/techman_robot_msgs/package.xml old mode 100644 new mode 100755 diff --git a/techman_robot_msgs/srv/TechmanRobotCommand.srv b/techman_robot_msgs/srv/TechmanRobotCommand.srv old mode 100644 new mode 100755 diff --git a/tm_driver/CMakeLists.txt b/tm_driver/CMakeLists.txt old mode 100644 new mode 100755 diff --git a/tm_driver/include/tm_driver/tm_command.h b/tm_driver/include/tm_driver/tm_command.h old mode 100644 new mode 100755 diff --git a/tm_driver/include/tm_driver/tm_communication.h b/tm_driver/include/tm_driver/tm_communication.h old mode 100644 new mode 100755 diff --git a/tm_driver/include/tm_driver/tm_driver.h b/tm_driver/include/tm_driver/tm_driver.h old mode 100644 new mode 100755 diff --git a/tm_driver/include/tm_driver/tm_packet.h b/tm_driver/include/tm_driver/tm_packet.h old mode 100644 new mode 100755 diff --git a/tm_driver/include/tm_driver/tm_pose_conversion.h b/tm_driver/include/tm_driver/tm_pose_conversion.h old mode 100644 new mode 100755 diff --git a/tm_driver/include/tm_driver/tm_print.h b/tm_driver/include/tm_driver/tm_print.h old mode 100644 new mode 100755 diff --git a/tm_driver/include/tm_driver/tm_robot_state.h b/tm_driver/include/tm_driver/tm_robot_state.h old mode 100644 new mode 100755 diff --git a/tm_driver/include/tm_driver/tm_ros2_sct.h b/tm_driver/include/tm_driver/tm_ros2_sct.h old mode 100644 new mode 100755 diff --git a/tm_driver/include/tm_driver/tm_ros2_svr.h b/tm_driver/include/tm_driver/tm_ros2_svr.h old mode 100644 new mode 100755 diff --git a/tm_driver/include/tm_driver/tm_sct_communication.h b/tm_driver/include/tm_driver/tm_sct_communication.h old mode 100644 new mode 100755 diff --git a/tm_driver/include/tm_driver/tm_svr_communication.h b/tm_driver/include/tm_driver/tm_svr_communication.h old mode 100644 new mode 100755 diff --git a/tm_driver/launch/tm_bringup.py b/tm_driver/launch/tm_bringup.py old mode 100644 new mode 100755 diff --git a/tm_driver/package.xml b/tm_driver/package.xml old mode 100644 new mode 100755 diff --git a/tm_driver/src/tm_command.cpp b/tm_driver/src/tm_command.cpp old mode 100644 new mode 100755 diff --git a/tm_driver/src/tm_communication.cpp b/tm_driver/src/tm_communication.cpp old mode 100644 new mode 100755 diff --git a/tm_driver/src/tm_driver.cpp b/tm_driver/src/tm_driver.cpp old mode 100644 new mode 100755 diff --git a/tm_driver/src/tm_packet.cpp b/tm_driver/src/tm_packet.cpp old mode 100644 new mode 100755 diff --git a/tm_driver/src/tm_print.cpp b/tm_driver/src/tm_print.cpp old mode 100644 new mode 100755 diff --git a/tm_driver/src/tm_robot_state.cpp b/tm_driver/src/tm_robot_state.cpp old mode 100644 new mode 100755 diff --git a/tm_driver/src/tm_ros2_composition.cpp b/tm_driver/src/tm_ros2_composition.cpp old mode 100644 new mode 100755 diff --git a/tm_driver/src/tm_ros2_node.cpp b/tm_driver/src/tm_ros2_node.cpp old mode 100644 new mode 100755 diff --git a/tm_driver/src/tm_ros2_sct.cpp b/tm_driver/src/tm_ros2_sct.cpp old mode 100644 new mode 100755 diff --git a/tm_driver/src/tm_ros2_svr.cpp b/tm_driver/src/tm_ros2_svr.cpp old mode 100644 new mode 100755 diff --git a/tm_driver/src/tm_sct_communication.cpp b/tm_driver/src/tm_sct_communication.cpp old mode 100644 new mode 100755 diff --git a/tm_driver/src/tm_svr_communication.cpp b/tm_driver/src/tm_svr_communication.cpp old mode 100644 new mode 100755 diff --git a/tm_msgs/CMakeLists.txt b/tm_msgs/CMakeLists.txt old mode 100644 new mode 100755 diff --git a/tm_msgs/msg/FeedbackState.msg b/tm_msgs/msg/FeedbackState.msg old mode 100644 new mode 100755 diff --git a/tm_msgs/msg/SctResponse.msg b/tm_msgs/msg/SctResponse.msg old mode 100644 new mode 100755 diff --git a/tm_msgs/msg/StaResponse.msg b/tm_msgs/msg/StaResponse.msg old mode 100644 new mode 100755 diff --git a/tm_msgs/msg/SvrResponse.msg b/tm_msgs/msg/SvrResponse.msg old mode 100644 new mode 100755 diff --git a/tm_msgs/package.xml b/tm_msgs/package.xml old mode 100644 new mode 100755 diff --git a/tm_msgs/srv/AskItem.srv b/tm_msgs/srv/AskItem.srv old mode 100644 new mode 100755 diff --git a/tm_msgs/srv/AskSta.srv b/tm_msgs/srv/AskSta.srv old mode 100644 new mode 100755 diff --git a/tm_msgs/srv/ConnectTM.srv b/tm_msgs/srv/ConnectTM.srv old mode 100644 new mode 100755 diff --git a/tm_msgs/srv/SendScript.srv b/tm_msgs/srv/SendScript.srv old mode 100644 new mode 100755 diff --git a/tm_msgs/srv/SetEvent.srv b/tm_msgs/srv/SetEvent.srv old mode 100644 new mode 100755 diff --git a/tm_msgs/srv/SetIO.srv b/tm_msgs/srv/SetIO.srv old mode 100644 new mode 100755 diff --git a/tm_msgs/srv/SetPositions.srv b/tm_msgs/srv/SetPositions.srv old mode 100644 new mode 100755 diff --git a/tm_msgs/srv/WriteItem.srv b/tm_msgs/srv/WriteItem.srv old mode 100644 new mode 100755 diff --git a/tmr_description/CMakeLists.txt b/tmr_description/CMakeLists.txt old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/collision/tm5-900_arm1_c.stl b/tmr_description/meshes/tm5-900/collision/tm5-900_arm1_c.stl old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/collision/tm5-900_arm2_c.stl b/tmr_description/meshes/tm5-900/collision/tm5-900_arm2_c.stl old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/collision/tm5_base_c.stl b/tmr_description/meshes/tm5-900/collision/tm5_base_c.stl old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/collision/tmr_100w_01_c.stl b/tmr_description/meshes/tm5-900/collision/tmr_100w_01_c.stl old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/collision/tmr_100w_02_c.stl b/tmr_description/meshes/tm5-900/collision/tmr_100w_02_c.stl old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/collision/tmr_400w_01_c.stl b/tmr_description/meshes/tm5-900/collision/tmr_400w_01_c.stl old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/collision/tmr_ee_c.stl b/tmr_description/meshes/tm5-900/collision/tmr_ee_c.stl old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/visual/tm5-900_arm1.mtl b/tmr_description/meshes/tm5-900/visual/tm5-900_arm1.mtl old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/visual/tm5-900_arm1.obj b/tmr_description/meshes/tm5-900/visual/tm5-900_arm1.obj old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/visual/tm5-900_arm1.stl b/tmr_description/meshes/tm5-900/visual/tm5-900_arm1.stl old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/visual/tm5-900_arm2.mtl b/tmr_description/meshes/tm5-900/visual/tm5-900_arm2.mtl old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/visual/tm5-900_arm2.obj b/tmr_description/meshes/tm5-900/visual/tm5-900_arm2.obj old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/visual/tm5-900_arm2.stl b/tmr_description/meshes/tm5-900/visual/tm5-900_arm2.stl old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/visual/tm5_base.mtl b/tmr_description/meshes/tm5-900/visual/tm5_base.mtl old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/visual/tm5_base.obj b/tmr_description/meshes/tm5-900/visual/tm5_base.obj old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/visual/tm5_base.stl b/tmr_description/meshes/tm5-900/visual/tm5_base.stl old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/visual/tm5_base_old.mtl b/tmr_description/meshes/tm5-900/visual/tm5_base_old.mtl old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/visual/tm5_base_old.obj b/tmr_description/meshes/tm5-900/visual/tm5_base_old.obj old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/visual/tmr_100w_01.mtl b/tmr_description/meshes/tm5-900/visual/tmr_100w_01.mtl old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/visual/tmr_100w_01.obj b/tmr_description/meshes/tm5-900/visual/tmr_100w_01.obj old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/visual/tmr_100w_01.stl b/tmr_description/meshes/tm5-900/visual/tmr_100w_01.stl old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/visual/tmr_100w_02.mtl b/tmr_description/meshes/tm5-900/visual/tmr_100w_02.mtl old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/visual/tmr_100w_02.obj b/tmr_description/meshes/tm5-900/visual/tmr_100w_02.obj old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/visual/tmr_100w_02.stl b/tmr_description/meshes/tm5-900/visual/tmr_100w_02.stl old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/visual/tmr_400w_01.mtl b/tmr_description/meshes/tm5-900/visual/tmr_400w_01.mtl old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/visual/tmr_400w_01.obj b/tmr_description/meshes/tm5-900/visual/tmr_400w_01.obj old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/visual/tmr_400w_01.stl b/tmr_description/meshes/tm5-900/visual/tmr_400w_01.stl old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/visual/tmr_ee.mtl b/tmr_description/meshes/tm5-900/visual/tmr_ee.mtl old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/visual/tmr_ee.obj b/tmr_description/meshes/tm5-900/visual/tmr_ee.obj old mode 100644 new mode 100755 diff --git a/tmr_description/meshes/tm5-900/visual/tmr_ee.stl b/tmr_description/meshes/tm5-900/visual/tmr_ee.stl old mode 100644 new mode 100755 diff --git a/tmr_description/package.xml b/tmr_description/package.xml old mode 100644 new mode 100755 diff --git a/tmr_description/urdf/tm5-900.urdf b/tmr_description/urdf/tm5-900.urdf old mode 100644 new mode 100755 diff --git a/tmr_description/xacro/gripper/robotiq_2f.urdf.xacro b/tmr_description/xacro/gripper/robotiq_2f.urdf.xacro old mode 100644 new mode 100755 diff --git a/tmr_description/xacro/gripper/robotiq_85_gripper.transmission.xacro b/tmr_description/xacro/gripper/robotiq_85_gripper.transmission.xacro old mode 100644 new mode 100755 diff --git a/tmr_description/xacro/gripper/robotiq_85_gripper.urdf.xacro b/tmr_description/xacro/gripper/robotiq_85_gripper.urdf.xacro old mode 100644 new mode 100755 diff --git a/tmr_description/xacro/gripper/robotiq_85_gripper.xacro b/tmr_description/xacro/gripper/robotiq_85_gripper.xacro old mode 100644 new mode 100755 diff --git a/tmr_description/xacro/gripper/robotiq_85_gripper_sim_base.urdf.xacro b/tmr_description/xacro/gripper/robotiq_85_gripper_sim_base.urdf.xacro old mode 100644 new mode 100755 diff --git a/tmr_description/xacro/macro.gazebo.xacro b/tmr_description/xacro/macro.gazebo.xacro old mode 100644 new mode 100755 diff --git a/tmr_description/xacro/macro.inertial.xacro b/tmr_description/xacro/macro.inertial.xacro old mode 100644 new mode 100755 diff --git a/tmr_description/xacro/macro.materials.xacro b/tmr_description/xacro/macro.materials.xacro old mode 100644 new mode 100755 diff --git a/tmr_description/xacro/macro.tm5-900.urdf.xacro b/tmr_description/xacro/macro.tm5-900.urdf.xacro old mode 100644 new mode 100755 diff --git a/tmr_description/xacro/macro.transmission.xacro b/tmr_description/xacro/macro.transmission.xacro old mode 100644 new mode 100755 diff --git a/tmr_description/xacro/tm5-900.urdf.xacro b/tmr_description/xacro/tm5-900.urdf.xacro old mode 100644 new mode 100755 diff --git a/tmr_mod_urdf/package.xml b/tmr_mod_urdf/package.xml old mode 100644 new mode 100755 diff --git a/tmr_mod_urdf/resource/tmr_mod_urdf b/tmr_mod_urdf/resource/tmr_mod_urdf old mode 100644 new mode 100755 diff --git a/tmr_mod_urdf/setup.cfg b/tmr_mod_urdf/setup.cfg old mode 100644 new mode 100755 diff --git a/tmr_mod_urdf/setup.py b/tmr_mod_urdf/setup.py old mode 100644 new mode 100755 diff --git a/tmr_mod_urdf/test/test_copyright.py b/tmr_mod_urdf/test/test_copyright.py old mode 100644 new mode 100755 diff --git a/tmr_mod_urdf/test/test_flake8.py b/tmr_mod_urdf/test/test_flake8.py old mode 100644 new mode 100755 diff --git a/tmr_mod_urdf/test/test_pep257.py b/tmr_mod_urdf/test/test_pep257.py old mode 100644 new mode 100755 diff --git a/tmr_mod_urdf/tmr_mod_urdf/__init__.py b/tmr_mod_urdf/tmr_mod_urdf/__init__.py old mode 100644 new mode 100755 diff --git a/tmr_mod_urdf/tmr_mod_urdf/modify_urdf.py b/tmr_mod_urdf/tmr_mod_urdf/modify_urdf.py old mode 100644 new mode 100755 diff --git a/tmr_mod_urdf/tmr_mod_urdf/modify_xacro.py b/tmr_mod_urdf/tmr_mod_urdf/modify_xacro.py old mode 100644 new mode 100755 diff --git a/tmr_moveit_config_tm5-900/CMakeLists.txt b/tmr_moveit_config_tm5-900/CMakeLists.txt old mode 100644 new mode 100755 diff --git a/tmr_moveit_config_tm5-900/config/chomp_planning.yaml b/tmr_moveit_config_tm5-900/config/chomp_planning.yaml old mode 100644 new mode 100755 diff --git a/tmr_moveit_config_tm5-900/config/fake_controllers.yaml b/tmr_moveit_config_tm5-900/config/fake_controllers.yaml old mode 100644 new mode 100755 diff --git a/tmr_moveit_config_tm5-900/config/joint_limits.yaml b/tmr_moveit_config_tm5-900/config/joint_limits.yaml old mode 100644 new mode 100755 diff --git a/tmr_moveit_config_tm5-900/config/kinematics.yaml b/tmr_moveit_config_tm5-900/config/kinematics.yaml old mode 100644 new mode 100755 diff --git a/tmr_moveit_config_tm5-900/config/ompl_planning.yaml b/tmr_moveit_config_tm5-900/config/ompl_planning.yaml old mode 100644 new mode 100755 diff --git a/tmr_moveit_config_tm5-900/config/ros_controllers.yaml b/tmr_moveit_config_tm5-900/config/ros_controllers.yaml old mode 100644 new mode 100755 diff --git a/tmr_moveit_config_tm5-900/config/sensors_3d.yaml b/tmr_moveit_config_tm5-900/config/sensors_3d.yaml old mode 100644 new mode 100755 diff --git a/tmr_moveit_config_tm5-900/config/stomp_planning.yaml b/tmr_moveit_config_tm5-900/config/stomp_planning.yaml old mode 100644 new mode 100755 diff --git a/tmr_moveit_config_tm5-900/config/tm5-900.srdf b/tmr_moveit_config_tm5-900/config/tm5-900.srdf old mode 100644 new mode 100755 diff --git a/tmr_moveit_config_tm5-900/package.xml b/tmr_moveit_config_tm5-900/package.xml old mode 100644 new mode 100755 diff --git a/tmr_moveit_cpp_demo/CMakeLists.txt b/tmr_moveit_cpp_demo/CMakeLists.txt old mode 100644 new mode 100755 diff --git a/tmr_moveit_cpp_demo/config/controllers.yaml b/tmr_moveit_cpp_demo/config/controllers.yaml old mode 100644 new mode 100755 diff --git a/tmr_moveit_cpp_demo/config/moveit_cpp.yaml b/tmr_moveit_cpp_demo/config/moveit_cpp.yaml old mode 100644 new mode 100755 diff --git a/tmr_moveit_cpp_demo/launch/run_moveit_cpp.launch.py b/tmr_moveit_cpp_demo/launch/run_moveit_cpp.launch.py old mode 100644 new mode 100755 diff --git a/tmr_moveit_cpp_demo/launch/run_moveit_cpp.rviz b/tmr_moveit_cpp_demo/launch/run_moveit_cpp.rviz old mode 100644 new mode 100755 diff --git a/tmr_moveit_cpp_demo/package.xml b/tmr_moveit_cpp_demo/package.xml old mode 100644 new mode 100755 diff --git a/tmr_moveit_cpp_demo/src/run_moveit_cpp.cpp b/tmr_moveit_cpp_demo/src/run_moveit_cpp.cpp old mode 100644 new mode 100755 diff --git a/tmr_msgs/CMakeLists.txt b/tmr_msgs/CMakeLists.txt old mode 100644 new mode 100755 diff --git a/tmr_msgs/package.xml b/tmr_msgs/package.xml old mode 100644 new mode 100755 diff --git a/tmrlib/include/tmr/tmr_data_table.h b/tmrlib/include/tmr/tmr_data_table.h old mode 100644 new mode 100755