├── .gitignore ├── README.md └── src ├── dynamixelsdk ├── .travis.yml ├── CONTRIBUTING.md ├── Doxyfile ├── LICENSE ├── README.md └── dynamixel_sdk │ ├── CHANGELOG.rst │ ├── CMakeLists.txt │ ├── include │ └── dynamixel_sdk │ │ ├── dynamixel_sdk.h │ │ ├── group_bulk_read.h │ │ ├── group_bulk_write.h │ │ ├── group_sync_read.h │ │ ├── group_sync_write.h │ │ ├── packet_handler.h │ │ ├── port_handler.h │ │ ├── port_handler_arduino.h │ │ ├── port_handler_linux.h │ │ ├── port_handler_mac.h │ │ ├── port_handler_windows.h │ │ ├── protocol1_packet_handler.h │ │ └── protocol2_packet_handler.h │ ├── package.xml │ └── src │ ├── DynamixelSDK.h │ └── dynamixel_sdk │ ├── group_bulk_read.cpp │ ├── group_bulk_write.cpp │ ├── group_sync_read.cpp │ ├── group_sync_write.cpp │ ├── packet_handler.cpp │ ├── port_handler.cpp │ ├── port_handler_arduino.cpp │ ├── port_handler_linux.cpp │ ├── port_handler_mac.cpp │ ├── port_handler_windows.cpp │ ├── protocol1_packet_handler.cpp │ └── protocol2_packet_handler.cpp ├── imu_tools ├── .travis.yml ├── Dockerfile-eloquent ├── README.md ├── imu_complementary_filter │ ├── CHANGELOG.rst │ ├── CMakeLists.txt │ ├── COLCON_IGNORE │ ├── include │ │ └── imu_complementary_filter │ │ │ ├── complementary_filter.h │ │ │ └── complementary_filter_ros.h │ ├── launch │ │ └── complementary_filter.launch │ ├── package.xml │ └── src │ │ ├── complementary_filter.cpp │ │ ├── complementary_filter_node.cpp │ │ └── complementary_filter_ros.cpp ├── imu_filter_madgwick │ ├── CHANGELOG.rst │ ├── CMakeLists.txt │ ├── COPYING │ ├── config │ │ └── imu_filter.yaml │ ├── include │ │ └── imu_filter_madgwick │ │ │ ├── base_node.hpp │ │ │ ├── imu_filter.h │ │ │ ├── imu_filter_ros.h │ │ │ ├── stateless_orientation.h │ │ │ └── world_frame.h │ ├── launch │ │ ├── imu_filter.launch.py │ │ └── imu_filter_component.launch.py │ ├── package.xml │ ├── sample │ │ ├── ardrone_imu.bag │ │ ├── phidgets_imu_upside_down.bag │ │ └── sparkfun_razor.bag │ ├── src │ │ ├── imu_filter.cpp │ │ ├── imu_filter_node.cpp │ │ ├── imu_filter_ros.cpp │ │ └── stateless_orientation.cpp │ └── test │ │ ├── CMakeLists.txt │ │ ├── madgwick_test.cpp │ │ ├── stateless_orientation_test.cpp │ │ └── test_helpers.h ├── imu_tools │ ├── CHANGELOG.rst │ ├── CMakeLists.txt │ └── package.xml └── rviz_imu_plugin │ ├── CHANGELOG.rst │ ├── CMakeLists.txt │ ├── package.xml │ ├── plugin_description.xml │ ├── rosdoc.yaml │ ├── rviz_imu_plugin.png │ └── src │ ├── imu_acc_visual.cpp │ ├── imu_acc_visual.h │ ├── imu_axes_visual.cpp │ ├── imu_axes_visual.h │ ├── imu_display.cpp │ ├── imu_display.h │ ├── imu_orientation_visual.cpp │ ├── imu_orientation_visual.h │ ├── mag_display.cpp │ ├── mag_display.h │ ├── mag_visual.cpp │ └── mag_visual.h ├── robot_localization ├── .travis.yml ├── CHANGELOG.rst ├── CMakeLists.txt ├── LICENSE ├── README.md ├── doc │ ├── .templates │ │ └── full_globaltoc.html │ ├── CHANGELOG.rst │ ├── Makefile │ ├── conf.py │ ├── configuring_robot_localization.rst │ ├── images │ │ ├── figure1.png │ │ └── rl_small.png │ ├── index.rst │ ├── integrating_gps.rst │ ├── manifest.yaml │ ├── migrating_from_robot_pose_ekf.rst │ ├── navsat_transform_node.rst │ ├── preparing_sensor_data.rst │ ├── robot_localization_ias13_revised.pdf │ └── state_estimation_nodes.rst ├── include │ └── robot_localization │ │ ├── ekf.hpp │ │ ├── filter_base.hpp │ │ ├── filter_common.hpp │ │ ├── filter_state.hpp │ │ ├── filter_utilities.hpp │ │ ├── measurement.hpp │ │ ├── navsat_conversions.hpp │ │ ├── navsat_transform.hpp │ │ ├── robot_localization_estimator.hpp │ │ ├── ros_filter.hpp │ │ ├── ros_filter_types.hpp │ │ ├── ros_filter_utilities.hpp │ │ ├── ros_robot_localization_listener.hpp │ │ └── ukf.hpp ├── launch │ ├── dual_ekf_navsat_example_simulation.launch.py │ ├── ekf.launch.py │ ├── ekf_global.launch.py │ ├── navsat_transform.launch.py │ └── ukf.launch.py ├── package.xml ├── params │ ├── dual_ekf_navsat_example.yaml │ ├── ekf.yaml │ ├── navsat_transform.yaml │ └── ukf.yaml ├── rosdoc.yaml ├── src │ ├── ekf.cpp │ ├── ekf_node.cpp │ ├── filter_base.cpp │ ├── filter_utilities.cpp │ ├── navsat_transform.cpp │ ├── navsat_transform_node.cpp │ ├── robot_localization_estimator.cpp │ ├── robot_localization_listener_node.cpp │ ├── ros_filter.cpp │ ├── ros_filter_utilities.cpp │ ├── ros_robot_localization_listener.cpp │ ├── ukf.cpp │ └── ukf_node.cpp ├── srv │ ├── FromLL.srv │ ├── GetState.srv │ ├── SetDatum.srv │ ├── SetPose.srv │ ├── ToLL.srv │ └── ToggleFilterProcessing.srv └── test │ ├── test1.bag │ ├── test2.bag │ ├── test3.bag │ ├── test_ekf.cpp │ ├── test_ekf_localization_node_bag1.launch.py │ ├── test_ekf_localization_node_bag1.sh │ ├── test_ekf_localization_node_bag1.yaml │ ├── test_ekf_localization_node_bag2.launch.py │ ├── test_ekf_localization_node_bag2.sh │ ├── test_ekf_localization_node_bag2.yaml │ ├── test_ekf_localization_node_bag3.launch.py │ ├── test_ekf_localization_node_bag3.sh │ ├── test_ekf_localization_node_bag3.yaml │ ├── test_ekf_localization_node_interfaces.cpp │ ├── test_ekf_localization_node_interfaces.launch.py │ ├── test_ekf_localization_node_interfaces.yaml │ ├── test_filter_base.cpp │ ├── test_filter_base_diagnostics_timestamps.cpp │ ├── test_filter_base_diagnostics_timestamps.launch.py │ ├── test_filter_base_diagnostics_timestamps.yaml │ ├── test_localization_node_bag_pose_tester.cpp │ ├── test_robot_localization_estimator.cpp │ ├── test_robot_localization_estimator.launch.py │ ├── test_ros_robot_localization_listener.cpp │ ├── test_ros_robot_localization_listener.launch.py │ ├── test_ros_robot_localization_listener.yaml │ ├── test_ros_robot_localization_listener_publisher.cpp │ ├── test_ukf.cpp │ ├── test_ukf_localization_node_bag1.launch.py │ ├── test_ukf_localization_node_bag1.sh │ ├── test_ukf_localization_node_bag1.yaml │ ├── test_ukf_localization_node_bag2.launch.py │ ├── test_ukf_localization_node_bag2.sh │ ├── test_ukf_localization_node_bag2.yaml │ ├── test_ukf_localization_node_bag3.launch.py │ ├── test_ukf_localization_node_bag3.sh │ ├── test_ukf_localization_node_bag3.yaml │ ├── test_ukf_localization_node_interfaces.cpp │ ├── test_ukf_localization_node_interfaces.launch.py │ └── test_ukf_localization_node_interfaces.yaml ├── turtlebot3 ├── .travis.yml ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE.md ├── LICENSE ├── README.md ├── turtlebot3.repos ├── turtlebot3 │ ├── CHANGELOG.rst │ ├── CMakeLists.txt │ └── package.xml ├── turtlebot3_bringup │ ├── 99-turtlebot3-cdc.rules │ ├── CHANGELOG.rst │ ├── CMakeLists.txt │ ├── launch │ │ ├── robot.launch.py │ │ ├── rviz2.launch.py │ │ └── turtlebot3_state_publisher.launch.py │ ├── package.xml │ └── param │ │ ├── burger.yaml │ │ ├── waffle.yaml │ │ └── waffle_pi.yaml ├── turtlebot3_cartographer │ ├── CHANGELOG.rst │ ├── CMakeLists.txt │ ├── config │ │ └── turtlebot3_lds_2d.lua │ ├── launch │ │ ├── cartographer.launch.py │ │ └── occupancy_grid.launch.py │ ├── package.xml │ └── rviz │ │ └── tb3_cartographer.rviz ├── turtlebot3_ci.repos ├── turtlebot3_description │ ├── CHANGELOG.rst │ ├── CMakeLists.txt │ ├── meshes │ │ ├── bases │ │ │ ├── burger_base.stl │ │ │ ├── waffle_base.stl │ │ │ └── waffle_pi_base.stl │ │ ├── sensors │ │ │ ├── astra.dae │ │ │ ├── astra.jpg │ │ │ ├── lds.stl │ │ │ ├── r200.dae │ │ │ └── r200.jpg │ │ └── wheels │ │ │ ├── left_tire.stl │ │ │ └── right_tire.stl │ ├── package.xml │ ├── rviz │ │ └── model.rviz │ └── urdf │ │ ├── common_properties.urdf │ │ ├── turtlebot3_burger.urdf │ │ ├── turtlebot3_waffle.urdf │ │ └── turtlebot3_waffle_pi.urdf ├── turtlebot3_example │ ├── CHANGELOG.rst │ ├── package.xml │ ├── resource │ │ └── turtlebot3_example │ ├── setup.cfg │ ├── setup.py │ └── turtlebot3_example │ │ ├── __init__.py │ │ ├── turtlebot3_obstacle_detection │ │ ├── __init__.py │ │ ├── main.py │ │ └── turtlebot3_obstacle_detection.py │ │ ├── turtlebot3_patrol_client │ │ ├── __init__.py │ │ ├── main.py │ │ └── turtlebot3_patrol_client.py │ │ ├── turtlebot3_patrol_server │ │ ├── __init__.py │ │ ├── main.py │ │ ├── turtlebot3_path.py │ │ └── turtlebot3_patrol_server.py │ │ └── turtlebot3_position_control │ │ ├── __init__.py │ │ ├── main.py │ │ ├── turtlebot3_path.py │ │ └── turtlebot3_position_control.py ├── turtlebot3_navigation2 │ ├── CHANGELOG.rst │ ├── CMakeLists.txt │ ├── launch │ │ └── navigation2.launch.py │ ├── map │ │ ├── turtlebot3_world.pgm │ │ └── turtlebot3_world.yaml │ ├── package.xml │ ├── param │ │ ├── burger.yaml │ │ ├── waffle.yaml │ │ └── waffle_pi.yaml │ └── rviz │ │ └── tb3_navigation2.rviz ├── turtlebot3_node │ ├── CHANGELOG.rst │ ├── CMakeLists.txt │ ├── include │ │ └── turtlebot3_node │ │ │ ├── control_table.hpp │ │ │ ├── devices │ │ │ ├── devices.hpp │ │ │ ├── motor_power.hpp │ │ │ ├── reset.hpp │ │ │ └── sound.hpp │ │ │ ├── diff_drive_controller.hpp │ │ │ ├── dynamixel_sdk_wrapper.hpp │ │ │ ├── odometry.hpp │ │ │ ├── sensors │ │ │ ├── battery_state.hpp │ │ │ ├── imu.hpp │ │ │ ├── joint_state.hpp │ │ │ ├── sensor_state.hpp │ │ │ └── sensors.hpp │ │ │ └── turtlebot3.hpp │ ├── package.xml │ ├── param │ │ ├── burger.yaml │ │ ├── waffle.yaml │ │ └── waffle_pi.yaml │ └── src │ │ ├── devices │ │ ├── motor_power.cpp │ │ ├── reset.cpp │ │ └── sound.cpp │ │ ├── diff_drive_controller.cpp │ │ ├── dynamixel_sdk_wrapper.cpp │ │ ├── node_main.cpp │ │ ├── odometry.cpp │ │ ├── sensors │ │ ├── battery_state.cpp │ │ ├── imu.cpp │ │ ├── joint_state.cpp │ │ └── sensor_state.cpp │ │ └── turtlebot3.cpp └── turtlebot3_teleop │ ├── CHANGELOG.rst │ ├── package.xml │ ├── resource │ └── turtlebot3_teleop │ ├── setup.cfg │ ├── setup.py │ └── turtlebot3_teleop │ ├── __init__.py │ ├── __pycache__ │ └── __init__.cpython-38.pyc │ └── script │ ├── __init__.py │ ├── __pycache__ │ ├── __init__.cpython-38.pyc │ └── teleop_keyboard.cpython-38.pyc │ └── teleop_keyboard.py ├── turtlebot3_msgs ├── .travis.yml ├── CHANGELOG.rst ├── CMakeLists.txt ├── LICENSE ├── README.md ├── action │ └── Patrol.action ├── msg │ ├── SensorState.msg │ ├── Sound.msg │ └── VersionInfo.msg ├── package.xml └── srv │ ├── Dqn.srv │ └── Sound.srv └── turtlebot3_simulations ├── .travis.yml ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── turtlebot3_fake_node ├── CHANGELOG.rst ├── CMakeLists.txt ├── include │ └── turtlebot3_fake_node │ │ └── turtlebot3_fake_node.hpp ├── launch │ ├── rviz2.launch.py │ └── turtlebot3_fake_node.launch.py ├── package.xml ├── param │ ├── burger.yaml │ ├── waffle.yaml │ └── waffle_pi.yaml ├── rviz │ └── model.rviz └── src │ └── turtlebot3_fake_node.cpp ├── turtlebot3_gazebo ├── CHANGELOG.rst ├── CMakeLists.txt ├── include │ └── turtlebot3_gazebo │ │ └── turtlebot3_drive.hpp ├── launch │ ├── empty_world.launch.py │ ├── robot_state_publisher.launch.py │ ├── turtlebot3_autorace.launch.py │ ├── turtlebot3_dqn_stage1.launch.py │ ├── turtlebot3_dqn_stage2.launch.py │ ├── turtlebot3_dqn_stage3.launch.py │ ├── turtlebot3_dqn_stage4.launch.py │ ├── turtlebot3_house.launch.py │ └── turtlebot3_world.launch.py ├── models │ ├── turtlebot3_autorace │ │ ├── course │ │ │ ├── materials │ │ │ │ ├── scripts │ │ │ │ │ └── course.material │ │ │ │ └── textures │ │ │ │ │ └── course.png │ │ │ ├── model.config │ │ │ └── model.sdf │ │ ├── ground │ │ │ ├── model.config │ │ │ └── model.sdf │ │ ├── lights │ │ │ ├── model.config │ │ │ └── model.sdf │ │ ├── model.config │ │ ├── traffic_bar_down │ │ │ ├── materials │ │ │ │ ├── scripts │ │ │ │ │ └── traffic_bar.material │ │ │ │ └── textures │ │ │ │ │ └── traffic_bar.png │ │ │ ├── model.config │ │ │ └── model.sdf │ │ ├── traffic_bar_up │ │ │ ├── materials │ │ │ │ ├── scripts │ │ │ │ │ └── traffic_bar.material │ │ │ │ └── textures │ │ │ │ │ └── traffic_bar.png │ │ │ ├── model.config │ │ │ └── model.sdf │ │ ├── traffic_light_green │ │ │ ├── model.config │ │ │ └── model.sdf │ │ ├── traffic_light_red │ │ │ ├── model.config │ │ │ └── model.sdf │ │ ├── traffic_light_yellow │ │ │ ├── model.config │ │ │ └── model.sdf │ │ ├── traffic_parking │ │ │ ├── materials │ │ │ │ ├── scripts │ │ │ │ │ └── traffic_parking.material │ │ │ │ └── textures │ │ │ │ │ └── traffic_parking.png │ │ │ ├── model.config │ │ │ └── model.sdf │ │ ├── traffic_stop │ │ │ ├── materials │ │ │ │ ├── scripts │ │ │ │ │ └── traffic_stop.material │ │ │ │ └── textures │ │ │ │ │ └── traffic_stop.png │ │ │ ├── model.config │ │ │ └── model.sdf │ │ ├── traffic_tunnel │ │ │ ├── materials │ │ │ │ ├── scripts │ │ │ │ │ └── tunnel.material │ │ │ │ └── textures │ │ │ │ │ └── tunnel.png │ │ │ ├── model.config │ │ │ └── model.sdf │ │ ├── tunnel_obstacles │ │ │ ├── model.config │ │ │ └── model.sdf │ │ └── tunnel_wall │ │ │ ├── model.config │ │ │ └── model.sdf │ ├── turtlebot3_burger │ │ ├── meshes │ │ │ ├── burger_base.dae │ │ │ ├── lds.dae │ │ │ └── tire.dae │ │ ├── model-1_4.sdf │ │ ├── model.config │ │ └── model.sdf │ ├── turtlebot3_dqn_world │ │ ├── goal_box │ │ │ ├── model.config │ │ │ └── model.sdf │ │ ├── inner_walls │ │ │ ├── model.config │ │ │ └── model.sdf │ │ ├── model.config │ │ ├── model.sdf │ │ ├── obstacle1 │ │ │ ├── model.config │ │ │ └── model.sdf │ │ ├── obstacle2 │ │ │ ├── model.config │ │ │ └── model.sdf │ │ ├── obstacle_plugin │ │ │ ├── CMakeLists.txt │ │ │ ├── build │ │ │ │ ├── libobstacle1.so │ │ │ │ ├── libobstacle2.so │ │ │ │ └── libobstacles.so │ │ │ ├── obstacle1.cc │ │ │ ├── obstacle2.cc │ │ │ └── obstacles.cc │ │ └── obstacles │ │ │ ├── model.config │ │ │ └── model.sdf │ ├── turtlebot3_house │ │ ├── model.config │ │ └── model.sdf │ ├── turtlebot3_waffle │ │ ├── meshes │ │ │ ├── lds.dae │ │ │ ├── r200.dae │ │ │ ├── tire.dae │ │ │ └── waffle_base.dae │ │ ├── model.config │ │ ├── model.sdf │ │ └── model_old.sdf │ ├── turtlebot3_waffle_pi │ │ ├── meshes │ │ │ ├── lds.dae │ │ │ ├── tire.dae │ │ │ └── waffle_pi_base.dae │ │ ├── model-1_4_.sdf │ │ ├── model.config │ │ └── model.sdf │ └── turtlebot3_world │ │ ├── meshes │ │ ├── hexagon.dae │ │ └── wall.dae │ │ ├── model-1_4.sdf │ │ ├── model.config │ │ └── model.sdf ├── package.xml ├── rviz │ ├── tb3_gazebo.rviz │ └── tb3_gazebo_robot_localization.rviz ├── src │ └── turtlebot3_drive.cpp └── worlds │ ├── empty_worlds │ ├── burger.model │ ├── waffle.model │ └── waffle_pi.model │ ├── turtlebot3_autoraces │ ├── burger.model │ ├── waffle.model │ └── waffle_pi.model │ ├── turtlebot3_dqn_stage1 │ ├── burger.model │ ├── waffle.model │ └── waffle_pi.model │ ├── turtlebot3_dqn_stage2 │ ├── burger.model │ ├── waffle.model │ └── waffle_pi.model │ ├── turtlebot3_dqn_stage3 │ ├── burger.model │ ├── waffle.model │ └── waffle_pi.model │ ├── turtlebot3_dqn_stage4 │ ├── burger.model │ ├── waffle.model │ └── waffle_pi.model │ ├── turtlebot3_houses │ ├── burger.model │ ├── waffle.model │ └── waffle_pi.model │ └── turtlebot3_worlds │ ├── burger.model │ ├── waffle.model │ └── waffle_pi.model ├── turtlebot3_simulations ├── CHANGELOG.rst ├── CMakeLists.txt └── package.xml └── turtlebot3_simulations_ci.repos /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode/ 2 | build/ 3 | log/ 4 | install/ -------------------------------------------------------------------------------- /src/dynamixelsdk/.travis.yml: -------------------------------------------------------------------------------- 1 | services: 2 | - docker 3 | 4 | language: 5 | - generic 6 | 7 | notifications: 8 | email: 9 | on_success: change 10 | on_failure: always 11 | recipients: 12 | - willson@robotis.com 13 | 14 | branches: 15 | only: 16 | - ros2 17 | - ros2-devel 18 | - dashing-devel 19 | - eloquent-devel 20 | - foxy-devel 21 | 22 | install: 23 | - git clone --quiet --depth 1 https://github.com/ROBOTIS-GIT/ros2ci.git .ros2ci 24 | 25 | matrix: 26 | include: 27 | - script: .ros2ci/travis.bash dashing 28 | - script: .ros2ci/travis.bash eloquent 29 | - script: .ros2ci/travis.bash nightly 30 | -------------------------------------------------------------------------------- /src/dynamixelsdk/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | Thank you very much for your every contributions! 2 | 3 | I'm very glad to see so many changes and advances from the earlier SDK. 4 | 5 | While getting lots of information from you, the entire network in repo doesn't seem very clear 6 | so the work was very hard to be carried out so far. 7 | 8 | Hence, I will update some GUIDELINES that is very necessary to get your ideas be MERGED. 9 | 10 | 1. After every release, there is a 'develop' branch. To make your idea be accepted on the next release, 11 | YOU SHOULD GET PULL REQUEST BASED ON THE 'DEVELOP' BRANCH, NOT THE 'MASTER' BRANCH!! 12 | All pull requests based on 'master' branch will be 'suspended' or 'won't fix', so make sure before the pull request. 13 | 14 | 2. I'm hoping that many users can list up on the [CONTRIBUTORS](https://github.com/ROBOTIS-GIT/DynamixelSDK/graphs/contributors). 15 | Seriously, I don't want to get your idea as my name but as your name. However, if your idea is left as based on 'develop branch' or idle, 16 | I can't do anything but upload your idea as my name. 17 | 18 | Thank you every time again, and let's make the source better to get many users happy while make Dynamixel applications. 19 | 20 | 2017.12.01 doc ver 1.0.1 21 | -------------------------------------------------------------------------------- /src/dynamixelsdk/dynamixel_sdk/include/dynamixel_sdk/dynamixel_sdk.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright 2017 ROBOTIS CO., LTD. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | *******************************************************************************/ 16 | 17 | //////////////////////////////////////////////////////////////////////////////// 18 | /// @file The file that includes whole Dynamixel SDK libraries 19 | /// @author Zerom, Leon (RyuWoon Jung) 20 | //////////////////////////////////////////////////////////////////////////////// 21 | 22 | #ifndef DYNAMIXEL_SDK_INCLUDE_DYNAMIXEL_SDK_DYNAMIXELSDK_H_ 23 | #define DYNAMIXEL_SDK_INCLUDE_DYNAMIXEL_SDK_DYNAMIXELSDK_H_ 24 | 25 | 26 | #include "group_bulk_read.h" 27 | #include "group_bulk_write.h" 28 | #include "group_sync_read.h" 29 | #include "group_sync_write.h" 30 | #include "packet_handler.h" 31 | #include "port_handler.h" 32 | 33 | 34 | #endif /* DYNAMIXEL_SDK_INCLUDE_DYNAMIXEL_SDK_DYNAMIXELSDK_H_ */ 35 | -------------------------------------------------------------------------------- /src/dynamixelsdk/dynamixel_sdk/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | dynamixel_sdk 5 | 3.7.30 6 | 7 | This package is wrapping version of ROBOTIS Dynamixel SDK for ROS 2. The ROBOTIS Dynamixel SDK, or SDK, is a software development library that provides Dynamixel control functions for packet communication. The API is designed for Dynamixel actuators and Dynamixel-based platforms. 8 | 9 | Apache 2.0 10 | Pyo 11 | Darby Lim 12 | Zerom 13 | Leon 14 | Will Son 15 | http://wiki.ros.org/dynamixel_sdk 16 | http://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_sdk/overview/ 17 | https://github.com/ROBOTIS-GIT/DynamixelSDK 18 | https://github.com/ROBOTIS-GIT/DynamixelSDK/issues 19 | ament_cmake 20 | 21 | ament_cmake 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/dynamixelsdk/dynamixel_sdk/src/DynamixelSDK.h: -------------------------------------------------------------------------------- 1 | #include "../include/dynamixel_sdk/dynamixel_sdk.h" 2 | -------------------------------------------------------------------------------- /src/dynamixelsdk/dynamixel_sdk/src/dynamixel_sdk/port_handler.cpp: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright 2017 ROBOTIS CO., LTD. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | *******************************************************************************/ 16 | 17 | /* Author: zerom, Ryu Woon Jung (Leon) */ 18 | 19 | #if defined(__linux__) 20 | #include "port_handler.h" 21 | #include "port_handler_linux.h" 22 | #elif defined(__APPLE__) 23 | #include "port_handler.h" 24 | #include "port_handler_mac.h" 25 | #elif defined(_WIN32) || defined(_WIN64) 26 | #define WINDLLEXPORT 27 | #include "port_handler.h" 28 | #include "port_handler_windows.h" 29 | #elif defined(ARDUINO) || defined(__OPENCR__) || defined(__OPENCM904__) 30 | #include "../../include/dynamixel_sdk/port_handler.h" 31 | #include "../../include/dynamixel_sdk/port_handler_arduino.h" 32 | #endif 33 | 34 | using namespace dynamixel; 35 | 36 | PortHandler *PortHandler::getPortHandler(const char *port_name) 37 | { 38 | #if defined(__linux__) 39 | return (PortHandler *)(new PortHandlerLinux(port_name)); 40 | #elif defined(__APPLE__) 41 | return (PortHandler *)(new PortHandlerMac(port_name)); 42 | #elif defined(_WIN32) || defined(_WIN64) 43 | return (PortHandler *)(new PortHandlerWindows(port_name)); 44 | #elif defined(ARDUINO) || defined(__OPENCR__) || defined(__OPENCM904__) 45 | return (PortHandler *)(new PortHandlerArduino(port_name)); 46 | #endif 47 | } 48 | -------------------------------------------------------------------------------- /src/imu_tools/.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: required 2 | 3 | services: 4 | - docker 5 | 6 | env: 7 | matrix: 8 | - CI_ROS_DISTRO="eloquent" 9 | 10 | install: 11 | - docker build -t imu_tools_$CI_ROS_DISTRO -f Dockerfile-$CI_ROS_DISTRO . 12 | 13 | script: 14 | - docker run imu_tools_$CI_ROS_DISTRO /bin/bash -c "source install/setup.bash && colcon test && colcon test-result" 15 | -------------------------------------------------------------------------------- /src/imu_tools/Dockerfile-eloquent: -------------------------------------------------------------------------------- 1 | FROM ros:eloquent-ros-core 2 | 3 | RUN apt-get update && apt-get install -y \ 4 | build-essential clang-format python3-colcon-common-extensions python3-rosdep 5 | 6 | # Create ROS workspace 7 | COPY . /ws/src/imu_tools 8 | WORKDIR /ws 9 | 10 | # Use rosdep to install all dependencies (including ROS itself) 11 | RUN rosdep init && rosdep update && rosdep install --from-paths src -i -y --rosdistro eloquent 12 | 13 | RUN /bin/bash -c "source /opt/ros/eloquent/setup.bash && \ 14 | colcon build --parallel-workers 1 && \ 15 | colcon test --parallel-workers 1" 16 | -------------------------------------------------------------------------------- /src/imu_tools/README.md: -------------------------------------------------------------------------------- 1 | IMU tools for ROS 2 | =================================== 3 | 4 | Overview 5 | ----------------------------------- 6 | 7 | IMU-related filters and visualizers. The stack contains: 8 | 9 | * `imu_filter_madgwick`: a filter which fuses angular velocities, 10 | accelerations, and (optionally) magnetic readings from a generic IMU 11 | device into an orientation. Based on the work of [1]. 12 | 13 | * `imu_complementary_filter`: a filter which fuses angular velocities, 14 | accelerations, and (optionally) magnetic readings from a generic IMU 15 | device into an orientation quaternion using a novel approach based on a complementary fusion. Based on the work of [2]. 16 | 17 | * `rviz_imu_plugin` a plugin for rviz which displays `sensor_msgs::Imu` 18 | messages 19 | 20 | Installing 21 | ----------------------------------- 22 | 23 | ### From source ### 24 | 25 | [Create a catkin workspace](http://wiki.ros.org/catkin/Tutorials/create_a_workspace) 26 | (e.g., `~/ros-hydro-ws/`) and source the `devel/setup.bash` file. 27 | 28 | Make sure you have git installed: 29 | 30 | sudo apt-get install git-core 31 | 32 | Download the stack from our repository into your catkin workspace (e.g., 33 | `ros-hydro-ws/src`; use the proper branch for your distro, e.g., `groovy`, 34 | `hydro`...): 35 | 36 | git clone -b https://github.com/ccny-ros-pkg/imu_tools.git 37 | 38 | Install any dependencies using [rosdep](http://www.ros.org/wiki/rosdep). 39 | 40 | rosdep install imu_tools 41 | 42 | Compile the stack: 43 | 44 | cd ~/ros-hydro-ws 45 | catkin_make 46 | 47 | More info 48 | ----------------------------------- 49 | 50 | http://wiki.ros.org/imu_tools 51 | 52 | License 53 | ----------------------------------- 54 | 55 | * `imu_filter_madgwick`: currently licensed as GPL, following the original implementation 56 | 57 | * `imu_complementary_filter`: BSD 58 | 59 | * `rviz_imu_plugin`: BSD 60 | 61 | References 62 | ----------------------------------- 63 | [1] http://www.x-io.co.uk/open-source-imu-and-ahrs-algorithms/ 64 | 65 | [2] http://www.mdpi.com/1424-8220/15/8/19302 66 | -------------------------------------------------------------------------------- /src/imu_tools/imu_complementary_filter/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.5.1) 2 | project(imu_complementary_filter) 3 | 4 | find_package(Boost REQUIRED COMPONENTS thread) 5 | 6 | find_package(catkin REQUIRED COMPONENTS 7 | cmake_modules 8 | message_filters 9 | roscpp 10 | sensor_msgs 11 | std_msgs 12 | tf 13 | ) 14 | 15 | catkin_package( 16 | INCLUDE_DIRS include 17 | LIBRARIES complementary_filter 18 | CATKIN_DEPENDS message_filters roscpp sensor_msgs std_msgs tf 19 | ) 20 | 21 | include_directories( 22 | include 23 | ${catkin_INCLUDE_DIRS} 24 | ${Boost_INCLUDE_DIRS} 25 | ) 26 | 27 | ## Declare a cpp library 28 | add_library(complementary_filter 29 | src/complementary_filter.cpp 30 | src/complementary_filter_ros.cpp 31 | include/imu_complementary_filter/complementary_filter.h 32 | include/imu_complementary_filter/complementary_filter_ros.h 33 | ) 34 | target_link_libraries(complementary_filter ${catkin_LIBRARIES} ${Boost_LIBRARIES}) 35 | 36 | 37 | # create complementary_filter_node executable 38 | add_executable(complementary_filter_node 39 | src/complementary_filter_node.cpp) 40 | target_link_libraries(complementary_filter_node complementary_filter ${catkin_LIBRARIES}) 41 | 42 | install(TARGETS complementary_filter 43 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 44 | LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 45 | RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} 46 | ) 47 | 48 | install(TARGETS complementary_filter_node 49 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 50 | LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 51 | RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} 52 | ) 53 | 54 | ## Mark cpp header files for installation 55 | install(DIRECTORY include/${PROJECT_NAME}/ 56 | DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} 57 | FILES_MATCHING PATTERN "*.h" 58 | PATTERN ".svn" EXCLUDE 59 | ) 60 | -------------------------------------------------------------------------------- /src/imu_tools/imu_complementary_filter/COLCON_IGNORE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/imu_tools/imu_complementary_filter/COLCON_IGNORE -------------------------------------------------------------------------------- /src/imu_tools/imu_complementary_filter/launch/complementary_filter.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | #### Nodelet manager ###################################################### 4 | 5 | 7 | 8 | #### IMU Driver ########################################################### 9 | 10 | 13 | 14 | # supported data rates: 4 8 16 24 32 40 ... 1000 (in ms) 15 | 16 | 17 | 18 | 19 | #### Complementary filter 20 | 21 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /src/imu_tools/imu_complementary_filter/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | imu_complementary_filter 4 | 1.2.2 5 | Filter which fuses angular velocities, accelerations, and (optionally) magnetic readings from a generic IMU device into a quaternion to represent the orientation of the device wrt the global frame. Based on the algorithm by Roberto G. Valenti etal. described in the paper "Keeping a Good Attitude: A Quaternion-Based Orientation Filter for IMUs and MARGs" available at http://www.mdpi.com/1424-8220/15/8/19302 . 6 | 7 | Roberto G. Valenti 8 | BSD 9 | 10 | http://www.mdpi.com/1424-8220/15/8/19302 11 | Roberto G. Valenti 12 | 13 | catkin 14 | cmake_modules 15 | message_filters 16 | roscpp 17 | sensor_msgs 18 | std_msgs 19 | tf 20 | message_filters 21 | roscpp 22 | sensor_msgs 23 | std_msgs 24 | tf 25 | 26 | -------------------------------------------------------------------------------- /src/imu_tools/imu_filter_madgwick/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.5.1) 2 | project(imu_filter_madgwick) 3 | 4 | # Default to C++14 5 | if(NOT CMAKE_CXX_STANDARD) 6 | set(CMAKE_CXX_STANDARD 14) 7 | endif() 8 | 9 | if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") 10 | add_compile_options(-Wall -Wextra -Wpedantic) 11 | endif() 12 | 13 | find_package(ament_cmake REQUIRED) 14 | find_package(rclcpp REQUIRED) 15 | find_package(rclcpp_components REQUIRED) 16 | find_package(std_msgs REQUIRED) 17 | find_package(geometry_msgs REQUIRED) 18 | find_package(tf2_geometry_msgs REQUIRED) 19 | find_package(tf2_ros REQUIRED) 20 | find_package(sensor_msgs REQUIRED) 21 | 22 | include_directories(include) 23 | 24 | add_library(imu_filter_madgwick SHARED 25 | src/imu_filter.cpp 26 | src/imu_filter_ros.cpp 27 | src/stateless_orientation.cpp) 28 | ament_target_dependencies(imu_filter_madgwick 29 | rclcpp 30 | rclcpp_components 31 | std_msgs 32 | sensor_msgs 33 | geometry_msgs 34 | tf2_geometry_msgs 35 | tf2_ros 36 | ) 37 | rclcpp_components_register_nodes(imu_filter_madgwick "ImuFilterMadgwickRos") 38 | 39 | add_executable(imu_filter_madgwick_node src/imu_filter_node.cpp) 40 | target_link_libraries(imu_filter_madgwick_node imu_filter_madgwick) 41 | ament_target_dependencies(imu_filter_madgwick_node 42 | rclcpp) 43 | 44 | install(TARGETS 45 | imu_filter_madgwick 46 | ARCHIVE DESTINATION lib 47 | LIBRARY DESTINATION lib 48 | RUNTIME DESTINATION bin 49 | INCLUDES DESTINATION include 50 | ) 51 | 52 | install( 53 | DIRECTORY include/ 54 | DESTINATION include 55 | ) 56 | 57 | install(TARGETS 58 | imu_filter_madgwick_node 59 | DESTINATION lib/${PROJECT_NAME}) 60 | 61 | install(DIRECTORY 62 | launch config 63 | DESTINATION share/${PROJECT_NAME}) 64 | 65 | if(BUILD_TESTING) 66 | find_package(ament_cmake_gtest REQUIRED) 67 | add_subdirectory(test) 68 | endif() 69 | 70 | ament_export_include_directories(include) 71 | ament_export_libraries(imu_filter_madgwick) 72 | 73 | ament_package() 74 | -------------------------------------------------------------------------------- /src/imu_tools/imu_filter_madgwick/config/imu_filter.yaml: -------------------------------------------------------------------------------- 1 | imu_filter: 2 | ros__parameters: 3 | stateless: false 4 | use_mag: true 5 | publish_tf: true 6 | reverse_tf: false 7 | fixed_frame: "odom" 8 | constant_dt: 0.0 9 | publish_debug_topics: false 10 | world_frame: "enu" 11 | gain: 0.1 12 | zeta: 0.0 13 | mag_bias_x: 0.0 14 | mag_bias_y: 0.0 15 | mag_bias_z: 0.0 16 | orientation_stddev: 0.0 17 | -------------------------------------------------------------------------------- /src/imu_tools/imu_filter_madgwick/include/imu_filter_madgwick/stateless_orientation.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2010, CCNY Robotics Lab 3 | * Ivan Dryanovski 4 | * 5 | * http://robotics.ccny.cuny.edu 6 | * 7 | * Based on implementation of Madgwick's IMU and AHRS algorithms. 8 | * http://www.x-io.co.uk/node/8#open_source_ahrs_and_imu_algorithms 9 | * 10 | * 11 | * This program is free software: you can redistribute it and/or modify 12 | * it under the terms of the GNU General Public License as published by 13 | * the Free Software Foundation, either version 3 of the License, or 14 | * (at your option) any later version. 15 | * 16 | * This program is distributed in the hope that it will be useful, 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | * GNU General Public License for more details. 20 | * 21 | * You should have received a copy of the GNU General Public License 22 | * along with this program. If not, see . 23 | */ 24 | 25 | #ifndef IMU_FILTER_MADWICK_STATELESS_ORIENTATION_H 26 | #define IMU_FILTER_MADWICK_STATELESS_ORIENTATION_H 27 | 28 | #include 29 | #include 30 | #include 31 | 32 | class StatelessOrientation 33 | { 34 | public: 35 | static bool computeOrientation( 36 | WorldFrame::WorldFrame frame, 37 | geometry_msgs::msg::Vector3 acceleration, 38 | geometry_msgs::msg::Vector3 magneticField, 39 | geometry_msgs::msg::Quaternion& orientation); 40 | 41 | static bool computeOrientation( 42 | WorldFrame::WorldFrame frame, 43 | geometry_msgs::msg::Vector3 acceleration, 44 | geometry_msgs::msg::Quaternion& orientation); 45 | 46 | }; 47 | 48 | #endif // IMU_FILTER_MADWICK_STATELESS_ORIENTATION_H 49 | -------------------------------------------------------------------------------- /src/imu_tools/imu_filter_madgwick/include/imu_filter_madgwick/world_frame.h: -------------------------------------------------------------------------------- 1 | #ifndef IMU_FILTER_MADGWICK_WORLD_FRAME_H_ 2 | #define IMU_FILTER_MADGWICK_WORLD_FRAME_H_ 3 | 4 | namespace WorldFrame { 5 | enum WorldFrame { ENU, NED, NWU }; 6 | } 7 | 8 | #endif 9 | -------------------------------------------------------------------------------- /src/imu_tools/imu_filter_madgwick/launch/imu_filter.launch.py: -------------------------------------------------------------------------------- 1 | import os 2 | import launch 3 | import launch.actions 4 | import launch.substitutions 5 | import launch_ros.actions 6 | from ament_index_python.packages import get_package_share_directory 7 | 8 | def generate_launch_description(): 9 | 10 | config_dir = os.path.join( 11 | get_package_share_directory('imu_filter_madgwick'), 'config') 12 | 13 | return launch.LaunchDescription([ 14 | launch_ros.actions.Node( 15 | package='imu_filter_madgwick', node_executable='imu_filter_madgwick_node', node_name='imu_filter', output='screen', 16 | parameters=[os.path.join(config_dir, 'imu_filter.yaml')] 17 | ) 18 | ]) 19 | -------------------------------------------------------------------------------- /src/imu_tools/imu_filter_madgwick/launch/imu_filter_component.launch.py: -------------------------------------------------------------------------------- 1 | import os 2 | import launch 3 | import launch_ros.actions 4 | import launch.substitutions 5 | import yaml 6 | 7 | from launch_ros.actions import ComposableNodeContainer 8 | from launch_ros.descriptions import ComposableNode 9 | from ament_index_python.packages import get_package_share_directory 10 | 11 | def generate_launch_description(): 12 | 13 | param_config = os.path.join(get_package_share_directory('imu_filter_madgwick'), 'config', 'imu_filter.yaml') 14 | 15 | # https://github.com/ros2/rclcpp/issues/715#issuecomment-490425249 16 | # Composable Nodes use different yaml parsing than a standalone node. 17 | # This code will load the parameters from the yaml (removing the namespace/nodename/ros__parameters heading) so 18 | # that the parameters are parsed and named properly for the composable node. 19 | with open(param_config, 'r') as f: 20 | params = yaml.safe_load(f)['imu_filter']['ros__parameters'] 21 | 22 | container = ComposableNodeContainer( 23 | node_name='imu_filter_container', 24 | node_namespace='', 25 | package='rclcpp_components', 26 | node_executable='component_container', 27 | composable_node_descriptions=[ 28 | ComposableNode( 29 | package='imu_filter_madgwick', 30 | node_plugin='ImuFilterMadgwickRos', 31 | node_name='imu_filter', 32 | parameters=[params] 33 | ) 34 | ], 35 | output='screen' 36 | ) 37 | 38 | return launch.LaunchDescription([ 39 | container 40 | ]) 41 | -------------------------------------------------------------------------------- /src/imu_tools/imu_filter_madgwick/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | imu_filter_madgwick 5 | 1.2.2 6 | 7 | Filter which fuses angular velocities, accelerations, and (optionally) magnetic readings from a generic IMU device into an orientation. Based on code by Sebastian Madgwick, http://www.x-io.co.uk/node/8#open_source_ahrs_and_imu_algorithms. 8 | 9 | GPL 10 | http://ros.org/wiki/imu_filter_madgwick 11 | Ivan Dryanovski 12 | Martin Günther 13 | 14 | ament_cmake 15 | 16 | rclcpp 17 | rclcpp_action 18 | rclcpp_lifecycle 19 | visualization_msgs 20 | nav_msgs 21 | geometry_msgs 22 | builtin_interfaces 23 | tf2_ros 24 | tf2_geometry_msgs 25 | sensor_msgs 26 | 27 | ament_lint_common 28 | ament_lint_auto 29 | 30 | 31 | ament_cmake 32 | 33 | 34 | -------------------------------------------------------------------------------- /src/imu_tools/imu_filter_madgwick/sample/ardrone_imu.bag: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/imu_tools/imu_filter_madgwick/sample/ardrone_imu.bag -------------------------------------------------------------------------------- /src/imu_tools/imu_filter_madgwick/sample/phidgets_imu_upside_down.bag: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/imu_tools/imu_filter_madgwick/sample/phidgets_imu_upside_down.bag -------------------------------------------------------------------------------- /src/imu_tools/imu_filter_madgwick/sample/sparkfun_razor.bag: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/imu_tools/imu_filter_madgwick/sample/sparkfun_razor.bag -------------------------------------------------------------------------------- /src/imu_tools/imu_filter_madgwick/src/imu_filter_node.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2010, CCNY Robotics Lab 3 | * Ivan Dryanovski 4 | * 5 | * http://robotics.ccny.cuny.edu 6 | * 7 | * Based on implementation of Madgwick's IMU and AHRS algorithms. 8 | * http://www.x-io.co.uk/node/8#open_source_ahrs_and_imu_algorithms 9 | * 10 | * 11 | * This program is free software: you can redistribute it and/or modify 12 | * it under the terms of the GNU General Public License as published by 13 | * the Free Software Foundation, either version 3 of the License, or 14 | * (at your option) any later version. 15 | * 16 | * This program is distributed in the hope that it will be useful, 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | * GNU General Public License for more details. 20 | * 21 | * You should have received a copy of the GNU General Public License 22 | * along with this program. If not, see . 23 | */ 24 | #include 25 | 26 | #include "imu_filter_madgwick/imu_filter_ros.h" 27 | 28 | int main(int argc, char *argv[]) { 29 | rclcpp::init(argc, argv); 30 | 31 | rclcpp::executors::SingleThreadedExecutor exec; 32 | rclcpp::NodeOptions options; 33 | 34 | auto node = std::make_shared(options); 35 | exec.add_node(node); 36 | exec.spin(); 37 | 38 | rclcpp::shutdown(); 39 | 40 | return 0; 41 | } 42 | -------------------------------------------------------------------------------- /src/imu_tools/imu_filter_madgwick/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ament_add_gtest(madgwick_test madgwick_test.cpp) 2 | target_link_libraries(madgwick_test imu_filter_madgwick) 3 | 4 | ament_add_gtest(stateless_orientation_test stateless_orientation_test.cpp) 5 | target_link_libraries(stateless_orientation_test imu_filter_madgwick) 6 | -------------------------------------------------------------------------------- /src/imu_tools/imu_tools/CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2 | Changelog for package imu_tools 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 | 5 | 1.2.2 (2020-05-25) 6 | ------------------ 7 | 8 | 1.2.1 (2019-05-06) 9 | ------------------ 10 | 11 | 1.2.0 (2018-05-25) 12 | ------------------ 13 | 14 | 1.1.5 (2017-05-24) 15 | ------------------ 16 | 17 | 1.1.4 (2017-05-22) 18 | ------------------ 19 | 20 | 1.1.3 (2017-03-10) 21 | ------------------ 22 | 23 | 1.1.2 (2016-09-07) 24 | ------------------ 25 | 26 | 1.1.1 (2016-09-07) 27 | ------------------ 28 | 29 | 1.1.0 (2016-04-25) 30 | ------------------ 31 | 32 | 1.0.11 (2016-04-22) 33 | ------------------- 34 | 35 | 1.0.10 (2016-04-22) 36 | ------------------- 37 | 38 | 1.0.9 (2015-10-16) 39 | ------------------ 40 | 41 | 1.0.8 (2015-10-07) 42 | ------------------ 43 | * Add imu_complementary_filter to meta package 44 | * Contributors: Martin Günther 45 | 46 | 1.0.7 (2015-10-07) 47 | ------------------ 48 | 49 | 1.0.6 (2015-10-06) 50 | ------------------ 51 | 52 | 1.0.5 (2015-06-24) 53 | ------------------ 54 | 55 | 1.0.4 (2015-05-06) 56 | ------------------ 57 | 58 | 1.0.3 (2015-01-29) 59 | ------------------ 60 | 61 | 1.0.2 (2015-01-27) 62 | ------------------ 63 | 64 | 1.0.1 (2014-12-10) 65 | ------------------ 66 | * add me as maintainer to package.xml 67 | * Contributors: Martin Günther 68 | 69 | 1.0.0 (2014-09-03) 70 | ------------------ 71 | * First public release 72 | * catkinization of imu_tools metapackage 73 | * Contributors: Francisco Vina 74 | -------------------------------------------------------------------------------- /src/imu_tools/imu_tools/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.5.1) 2 | project(imu_tools) 3 | find_package(ament_cmake REQUIRED) 4 | ament_package() 5 | -------------------------------------------------------------------------------- /src/imu_tools/imu_tools/package.xml: -------------------------------------------------------------------------------- 1 | 2 | imu_tools 3 | 1.2.2 4 | 5 | Various tools for IMU devices 6 | 7 | Martin Günther 8 | BSD, GPL 9 | 10 | http://ros.org/wiki/imu_tools 11 | 12 | ament_cmake 13 | 14 | 15 | imu_filter_madgwick 16 | rviz_imu_plugin 17 | 18 | 19 | ament_cmake 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/imu_tools/rviz_imu_plugin/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | rviz_imu_plugin 5 | 1.2.2 6 | 7 | RVIZ plugin for IMU visualization 8 | 9 | BSD 10 | http://ros.org/wiki/rviz_imu_plugin 11 | Ivan Dryanovski 12 | Martin Günther 13 | 14 | ament_cmake 15 | 16 | qtbase5-dev 17 | 18 | message_filters 19 | pluginlib 20 | rclcpp 21 | rviz_common 22 | rviz_ogre_vendor 23 | rviz_rendering 24 | sensor_msgs 25 | tf2 26 | tf2_ros 27 | 28 | libqt5-core 29 | libqt5-gui 30 | libqt5-opengl 31 | libqt5-widgets 32 | 33 | 34 | 35 | 36 | ament_cmake 37 | 38 | 39 | -------------------------------------------------------------------------------- /src/imu_tools/rviz_imu_plugin/plugin_description.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | Displays the orientation and acceleration components of sensor_msgs/Imu messages. 9 | 10 | sensor_msgs/msg/Imu 11 | 12 | 13 | 16 | 17 | 18 | Displays the orientation of sensor_msgs/MagneticField messages. 19 | 20 | sensor_msgs/msg/MagneticField 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/imu_tools/rviz_imu_plugin/rosdoc.yaml: -------------------------------------------------------------------------------- 1 | - builder: sphinx 2 | sphinx_root_dir: src/doc 3 | -------------------------------------------------------------------------------- /src/imu_tools/rviz_imu_plugin/rviz_imu_plugin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/imu_tools/rviz_imu_plugin/rviz_imu_plugin.png -------------------------------------------------------------------------------- /src/robot_localization/.travis.yml: -------------------------------------------------------------------------------- 1 | dist: bionic 2 | sudo: enabled 3 | language: generic 4 | 5 | env: 6 | global: 7 | - ROS2_WS_ROBOT_LOCALIZATION=~/ros2_ws_robot_localization 8 | - ROS2_WS_ROBOT_LOCALIZATION_SRC=${ROS2_WS_ROBOT_LOCALIZATION}/src 9 | 10 | # command to install dependencies 11 | install: 12 | - sudo apt update && sudo apt install curl 13 | - curl http://repo.ros2.org/repos.key | sudo apt-key add - 14 | - sudo sh -c 'echo "deb [arch=amd64,arm64] http://repo.ros2.org/ubuntu/main `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list' 15 | - export ROS_DISTRO=bouncy 16 | - sudo apt update && sudo apt install -y python3-rosdep ros-$ROS_DISTRO-ros-base 17 | - sudo apt install python3-argcomplete 18 | - sudo apt install python3-colcon-common-extensions 19 | - sudo apt install build-essential 20 | - source /opt/ros/bouncy/setup.bash 21 | - source ~/${ROS2_WS_ROBOT_LOCALIZATION}/install/setup.bash 22 | - sudo rosdep init 23 | - rosdep update 24 | - sudo apt install python3-pip 25 | - sudo pip3 install argcomplete setuptools pytest pep257 flake8 26 | - sudo -H python3 -m pip install -U setuptools 27 | 28 | 29 | # command to run tests 30 | script: 31 | # - mkdir -p $ROS2_WS_ROBOT_LOCALIZATION 32 | - mkdir -p $ROS2_WS_ROBOT_LOCALIZATION_SRC 33 | - ln -s $TRAVIS_BUILD_DIR $ROS2_WS_ROBOT_LOCALIZATION_SRC 34 | - cd $ROS2_WS_ROBOT_LOCALIZATION 35 | - colcon build 36 | # - colcon test 37 | 38 | branches: 39 | only: 40 | - ros2 41 | 42 | notifications: 43 | email: false 44 | -------------------------------------------------------------------------------- /src/robot_localization/README.md: -------------------------------------------------------------------------------- 1 | robot_localization 2 | ================== 3 | 4 | robot_localization is a package of nonlinear state estimation nodes. The package was developed by Charles River Analytics, Inc. 5 | 6 | Please see documentation here: http://wiki.ros.org/robot_localization 7 | -------------------------------------------------------------------------------- /src/robot_localization/doc/.templates/full_globaltoc.html: -------------------------------------------------------------------------------- 1 |

{{ _('Table Of Contents') }}

2 | {{ toctree(includehidden=True) }} 3 | 4 |

{{ _('Further Documentation') }}

5 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/robot_localization/doc/CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ../CHANGELOG.rst -------------------------------------------------------------------------------- /src/robot_localization/doc/images/figure1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/robot_localization/doc/images/figure1.png -------------------------------------------------------------------------------- /src/robot_localization/doc/images/rl_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/robot_localization/doc/images/rl_small.png -------------------------------------------------------------------------------- /src/robot_localization/doc/manifest.yaml: -------------------------------------------------------------------------------- 1 | actions: [] 2 | authors: Tom Moore 3 | brief: '' 4 | bugtracker: '' 5 | depends: 6 | - catkin 7 | - eigen 8 | - diagnostic_updater 9 | - cmake_modules 10 | - tf2 11 | - nav_msgs 12 | - roscpp 13 | - rostest 14 | - tf2_ros 15 | - message_generation 16 | - message_filters 17 | - tf2_geometry_msgs 18 | - sensor_msgs 19 | - message_runtime 20 | - std_msgs 21 | - roslint 22 | - rosunit 23 | - diagnostic_msgs 24 | - geographic_msgs 25 | - xmlrpcpp 26 | - python-catkin-pkg 27 | - geometry_msgs 28 | - rosbag 29 | description: The robot_localization package provides nonlinear state estimation through 30 | sensor fusion of an abritrary number of sensors. 31 | license: BSD 32 | maintainers: Tom Moore 33 | msgs: [] 34 | package_type: package 35 | repo_url: '' 36 | srvs: 37 | - SetPose 38 | - SetDatum 39 | url: http://ros.org/wiki/robot_localization 40 | -------------------------------------------------------------------------------- /src/robot_localization/doc/robot_localization_ias13_revised.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/robot_localization/doc/robot_localization_ias13_revised.pdf -------------------------------------------------------------------------------- /src/robot_localization/launch/ekf.launch.py: -------------------------------------------------------------------------------- 1 | # Copyright 2018 Open Source Robotics Foundation, Inc. 2 | # Copyright 2019 Samsung Research America 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | from launch import LaunchDescription 17 | from ament_index_python.packages import get_package_share_directory 18 | import launch_ros.actions 19 | import os 20 | import yaml 21 | from launch.substitutions import EnvironmentVariable 22 | import pathlib 23 | import launch.actions 24 | from launch.actions import DeclareLaunchArgument 25 | 26 | def generate_launch_description(): 27 | return LaunchDescription([ 28 | launch_ros.actions.Node( 29 | package='robot_localization', 30 | executable='ekf_node', 31 | name='ekf_filter_node', 32 | output='screen', 33 | parameters=[os.path.join(get_package_share_directory("robot_localization"), 'params', 'ekf.yaml'), {'use_sim_time': True} ], 34 | remappings=[('odometry/filtered', 'odometry/local')], 35 | ) 36 | ]) 37 | -------------------------------------------------------------------------------- /src/robot_localization/launch/ekf_global.launch.py: -------------------------------------------------------------------------------- 1 | # Copyright 2018 Open Source Robotics Foundation, Inc. 2 | # Copyright 2019 Samsung Research America 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | from launch import LaunchDescription 17 | from ament_index_python.packages import get_package_share_directory 18 | import launch_ros.actions 19 | import os 20 | import yaml 21 | from launch.substitutions import EnvironmentVariable 22 | import pathlib 23 | import launch.actions 24 | from launch.actions import DeclareLaunchArgument 25 | 26 | def generate_launch_description(): 27 | return LaunchDescription([ 28 | launch_ros.actions.Node( 29 | package='robot_localization', 30 | executable='ekf_node', 31 | name='ekf_filter_node_map', 32 | output='screen', 33 | parameters=[os.path.join(get_package_share_directory("robot_localization"), 'params', 'dual_ekf_navsat_example.yaml'), {'use_sim_time': True}], 34 | remappings=[('odometry/filtered', 'odometry/global')], 35 | ) 36 | ]) 37 | -------------------------------------------------------------------------------- /src/robot_localization/launch/navsat_transform.launch.py: -------------------------------------------------------------------------------- 1 | # Copyright 2019 Samsung Research America 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | from launch import LaunchDescription 16 | from ament_index_python.packages import get_package_share_directory 17 | import launch_ros.actions 18 | import os 19 | import yaml 20 | from launch.substitutions import EnvironmentVariable 21 | import pathlib 22 | import launch.actions 23 | from launch.actions import DeclareLaunchArgument 24 | 25 | def generate_launch_description(): 26 | return LaunchDescription([ 27 | launch_ros.actions.Node( 28 | package='robot_localization', 29 | executable='navsat_transform_node', 30 | name='navsat_transform_node', 31 | output='screen', 32 | parameters=[os.path.join(get_package_share_directory("robot_localization"), 'params', 'navsat_transform.yaml'), {'use_sim_time': True}], 33 | remappings=[('imu', 'imu/data'), 34 | ('gps/fix', 'gps/fix'), 35 | ('gps/filtered', 'gps/filtered'), 36 | ('odometry/gps', 'odometry/gps'), 37 | ('odometry/filtered', 'odometry/global')], 38 | ), 39 | ]) 40 | -------------------------------------------------------------------------------- /src/robot_localization/launch/ukf.launch.py: -------------------------------------------------------------------------------- 1 | # Copyright 2018 Open Source Robotics Foundation, Inc. 2 | # Copyright 2019 Samsung Research America 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | from launch import LaunchDescription 17 | from ament_index_python.packages import get_package_share_directory 18 | import launch_ros.actions 19 | import os 20 | import yaml 21 | from launch.substitutions import EnvironmentVariable 22 | import pathlib 23 | import launch.actions 24 | from launch.actions import DeclareLaunchArgument 25 | 26 | def generate_launch_description(): 27 | return LaunchDescription([ 28 | launch_ros.actions.Node( 29 | package='robot_localization', 30 | executable='ukf_node', 31 | name='ukf_filter_node', 32 | output='screen', 33 | parameters=[os.path.join(get_package_share_directory("robot_localization"), 'params', 'ukf.yaml')], 34 | ), 35 | ]) 36 | -------------------------------------------------------------------------------- /src/robot_localization/rosdoc.yaml: -------------------------------------------------------------------------------- 1 | - builder: sphinx 2 | sphinx_root_dir: doc 3 | - builder: doxygen 4 | output_dir: api 5 | file_patterns: '*.cpp *.h *.dox *.md' 6 | exclude_patterns: '*/test/*' 7 | -------------------------------------------------------------------------------- /src/robot_localization/srv/FromLL.srv: -------------------------------------------------------------------------------- 1 | geographic_msgs/GeoPoint ll_point 2 | --- 3 | geometry_msgs/Point map_point 4 | -------------------------------------------------------------------------------- /src/robot_localization/srv/GetState.srv: -------------------------------------------------------------------------------- 1 | builtin_interfaces/Time time_stamp 2 | string frame_id 3 | --- 4 | # State vector: x, y, z, roll, pitch, yaw, vx, vy, vz, vroll, vpitch, vyaw, ax, ay, az 5 | float64[15] state 6 | 7 | # Covariance matrix in row-major order 8 | float64[225] covariance 9 | -------------------------------------------------------------------------------- /src/robot_localization/srv/SetDatum.srv: -------------------------------------------------------------------------------- 1 | geographic_msgs/GeoPose geo_pose 2 | --- 3 | -------------------------------------------------------------------------------- /src/robot_localization/srv/SetPose.srv: -------------------------------------------------------------------------------- 1 | geometry_msgs/PoseWithCovarianceStamped pose 2 | --- 3 | -------------------------------------------------------------------------------- /src/robot_localization/srv/ToLL.srv: -------------------------------------------------------------------------------- 1 | geometry_msgs/Point map_point 2 | --- 3 | geographic_msgs/GeoPoint ll_point 4 | -------------------------------------------------------------------------------- /src/robot_localization/srv/ToggleFilterProcessing.srv: -------------------------------------------------------------------------------- 1 | bool on 2 | --- 3 | bool status 4 | -------------------------------------------------------------------------------- /src/robot_localization/test/test1.bag: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/robot_localization/test/test1.bag -------------------------------------------------------------------------------- /src/robot_localization/test/test2.bag: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/robot_localization/test/test2.bag -------------------------------------------------------------------------------- /src/robot_localization/test/test3.bag: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/robot_localization/test/test3.bag -------------------------------------------------------------------------------- /src/robot_localization/test/test_ekf_localization_node_bag1.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #************************ test_ekf_localization_node_bag1 *************************** 4 | 5 | # In this automatic Script, multiple terminals will be opened, user need to check the terminal on which bag is playing. Once bag is stoped, check the terminal on which launch.py is running, user will see, test cases result (Pass Or Fail) after pressing ctrl+c. 6 | 7 | $PWD = `pwd` 8 | echo "Current Working Directory = $PWD" 9 | ROS1_DISTRO=melodic 10 | ROS2_DISTRO=crystal 11 | echo "ROS1_DISTRO = $ROS1_DISTRO" 12 | echo "ROS2_DISTRO = $ROS2_DISTRO" 13 | 14 | #Command to run roscore 15 | cmd1="source /opt/ros/$ROS1_DISTRO/setup.sh; roscore; exec /bin/bash" 16 | 17 | #Command to run ros1_bridge 18 | cmd2="source ~/ros2_ws/install/setup.bash; source /opt/ros/$ROS1_DISTRO/setup.bash; ros2 run ros1_bridge dynamic_bridge --bridge-all-topics; exec /bin/bash" 19 | 20 | #Command to play .bag from ROS1 21 | cmd3="source /opt/ros/$ROS1_DISTRO/setup.bash; rosparam set use_sim_time true; rosbag play $PWD/src/robot_localization/test/test1.bag --clock -d 5; exec /bin/bash" 22 | 23 | #Command to launch TestCase launch.py 24 | cmd4="source /opt/ros/$ROS2_DISTRO/setup.bash; source $PWD/install/setup.bash; ros2 launch robot_localization test_ekf_localization_node_bag1.launch.py; exec /bin/bash" 25 | 26 | #Command to run static_transform_publisher 27 | cmd5="source /opt/ros/$ROS2_DISTRO/setup.bash; ros2 run tf2_ros static_transform_publisher 0 -0.3 0.52 -1.570796327 0 1.570796327 base_link imu_link; exec /bin/bash" 28 | 29 | gnome-terminal --tab -t "roscore" -- /bin/bash -c "$cmd1" 30 | sleep 1 31 | gnome-terminal --tab -t "ros1_bridge" -- /bin/bash -c "$cmd2" 32 | gnome-terminal --tab -t "bag" -- /bin/bash -c "$cmd3" 33 | gnome-terminal --tab -t "TestCase_launch" -- /bin/bash -c "$cmd4" 34 | gnome-terminal --tab -t "static_transform_publisher" -- /bin/bash -c "$cmd5" 35 | -------------------------------------------------------------------------------- /src/robot_localization/test/test_ekf_localization_node_bag2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #************************ test_ekf_localization_node_bag2 *************************** 4 | 5 | # In this automatic Script, multiple terminals will be opened, user need to check the terminal on which bag is playing. Once bag is stoped, check the terminal on which launch.py is running, user will see, test cases result (Pass Or Fail) after pressing ctrl+c. 6 | 7 | $PWD = `pwd` 8 | echo "Current Working Directory = $PWD" 9 | ROS1_DISTRO=melodic 10 | ROS2_DISTRO=crystal 11 | echo "ROS1_DISTRO = $ROS1_DISTRO" 12 | echo "ROS2_DISTRO = $ROS2_DISTRO" 13 | 14 | #Command to run roscore 15 | cmd1="source /opt/ros/$ROS1_DISTRO/setup.sh; roscore; exec /bin/bash" 16 | 17 | #Command to run ros1_bridge 18 | cmd2="source ~/ros2_ws/install/setup.bash; source /opt/ros/$ROS1_DISTRO/setup.bash; ros2 run ros1_bridge dynamic_bridge --bridge-all-topics; exec /bin/bash" 19 | 20 | #Command to play .bag from ROS1 21 | cmd3="source /opt/ros/$ROS1_DISTRO/setup.bash; rosparam set use_sim_time true; rosbag play $PWD/src/robot_localization/test/test2.bag --clock -d 5; exec /bin/bash" 22 | 23 | #Command to launch TestCase launch.py 24 | cmd4="source /opt/ros/$ROS2_DISTRO/setup.bash; source $PWD/install/setup.bash; ros2 launch robot_localization test_ekf_localization_node_bag2.launch.py; exec /bin/bash" 25 | 26 | gnome-terminal --tab -t "roscore" -- /bin/bash -c "$cmd1" 27 | sleep 1 28 | gnome-terminal --tab -t "bag" -- /bin/bash -c "$cmd3" 29 | gnome-terminal --tab -t "TestCase_launch" -- /bin/bash -c "$cmd4" 30 | gnome-terminal --tab -t "ros1_bridge" -- /bin/bash -c "$cmd2" 31 | 32 | 33 | -------------------------------------------------------------------------------- /src/robot_localization/test/test_ekf_localization_node_bag3.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #************************ test_ekf_localization_node_bag3 *************************** 4 | 5 | # In this automatic Script, multiple terminals will be opened, user need to check the terminal on which bag is playing. Once bag is stoped, check the terminal on which launch.py is running, user will see, test cases result (Pass Or Fail) after pressing ctrl+c. 6 | 7 | $PWD = `pwd` 8 | echo "Current Working Directory = $PWD" 9 | ROS1_DISTRO=melodic 10 | ROS2_DISTRO=crystal 11 | echo "ROS1_DISTRO = $ROS1_DISTRO" 12 | echo "ROS2_DISTRO = $ROS2_DISTRO" 13 | 14 | #Command to run roscore 15 | cmd1="source /opt/ros/$ROS1_DISTRO/setup.sh; roscore; exec /bin/bash" 16 | 17 | #Command to run ros1_bridge 18 | cmd2="source ~/ros2_ws/install/setup.bash; source /opt/ros/$ROS1_DISTRO/setup.bash; ros2 run ros1_bridge dynamic_bridge --bridge-all-topics; exec /bin/bash" 19 | 20 | #Command to play .bag from ROS1 21 | cmd3="sleep 2; source /opt/ros/$ROS1_DISTRO/setup.bash; rosparam set /use_sim_time true; rosbag play $PWD/src/robot_localization/test/test3.bag --clock -d 5; exec /bin/bash" 22 | 23 | #Command to launch TestCase launch.py 24 | cmd4="sleep 2; source /opt/ros/$ROS2_DISTRO/setup.bash; source $PWD/install/setup.bash; ros2 launch robot_localization test_ekf_localization_node_bag3.launch.py; exec /bin/bash" 25 | 26 | gnome-terminal --tab -t "roscore" -- /bin/bash -c "$cmd1" 27 | sleep 1 28 | gnome-terminal --tab -t "ros1_bridge" -- /bin/bash -c "$cmd2" 29 | gnome-terminal --tab -t "bag" -- /bin/bash -c "$cmd3" 30 | gnome-terminal --tab -t "TestCase_launch" -- /bin/bash -c "$cmd4" 31 | 32 | -------------------------------------------------------------------------------- /src/robot_localization/test/test_filter_base_diagnostics_timestamps.yaml: -------------------------------------------------------------------------------- 1 | # 2 | 3 | # 4 | test_filter_base_diagnostics_timestamps: 5 | ros__parameters: 6 | debug: true 7 | debug_out_file: debug_ekf_localization.txt 8 | odom0: /example/odom 9 | pose0: /example/pose 10 | twist0: /example/twist 11 | imu0: /example/imu/data 12 | 13 | odom0_config: [false, false, false, 14 | false, false, false, 15 | true, false, false, 16 | false, false, false, 17 | false, false, false] 18 | odom0_relative: false 19 | 20 | pose0_config: [true, true, false, 21 | false, false, false, 22 | false, false, false, 23 | false, false, false, 24 | false, false, false] 25 | 26 | twist0_config: [false, false, false, 27 | false, false, false, 28 | true, true, true, 29 | true, true, true, 30 | false, false, false] 31 | 32 | imu0_config: [false, false, false, 33 | true, true, true, 34 | false, false, false, 35 | true, true, true, 36 | true, true, true] 37 | 38 | print_diagnostics: true 39 | -------------------------------------------------------------------------------- /src/robot_localization/test/test_robot_localization_estimator.launch.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import ament_index_python.packages 4 | import launch 5 | import launch_ros.actions 6 | 7 | def generate_launch_description(): 8 | 9 | # TODO: Port ROS 1 test launch params: clear_params="true" 10 | return launch.LaunchDescription([ 11 | launch_ros.actions.Node( 12 | package='robot_localization', 13 | executable='test_robot_localization_estimator', 14 | name='test_rle', 15 | ), 16 | ]) 17 | -------------------------------------------------------------------------------- /src/robot_localization/test/test_ros_robot_localization_listener.launch.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import ament_index_python.packages 4 | import launch 5 | import launch_ros.actions 6 | 7 | import os 8 | 9 | def generate_launch_description(): 10 | 11 | default_params_yaml = os.path.join( 12 | ament_index_python.packages.get_package_share_directory('robot_localization'), 13 | 'test', 'test_ros_robot_localization_listener.yaml') 14 | 15 | return launch.LaunchDescription([ 16 | # TODO: Port ROS 1 test launch params: clear_params="true" 17 | launch_ros.actions.Node( 18 | package='robot_localization', 19 | executable='test_ros_robot_localization_listener', 20 | remappings=[('test_ros_robot_localization_listener', 'test_estimator')], 21 | arguments=['__params:=' + default_params_yaml], 22 | output='screen', 23 | ), 24 | # TODO: Port ROS 1 test launch params: clear_params="true" 25 | launch_ros.actions.Node( 26 | package='robot_localization', 27 | executable='test_ros_robot_localization_listener_publisher', 28 | name='test_estimator', 29 | remappings=[ 30 | ('/odometry/filtered', 'odom/filtered'), 31 | ('/accel/filtered', 'acceleration/filtered'), 32 | ], 33 | output='screen', 34 | ), 35 | ]) 36 | -------------------------------------------------------------------------------- /src/robot_localization/test/test_ukf_localization_node_bag1.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #************************ test_ukf_localization_node_bag1 *************************** 4 | 5 | # In this automatic Script, multiple terminals will be opened, user need to check the terminal on which bag is playing. Once bag is stoped, check the terminal on which launch.py is running, user will see, test cases result (Pass Or Fail) after pressing ctrl+c. 6 | 7 | $PWD = `pwd` 8 | echo "Current Working Directory = $PWD" 9 | ROS1_DISTRO=melodic 10 | ROS2_DISTRO=crystal 11 | echo "ROS1_DISTRO = $ROS1_DISTRO" 12 | echo "ROS2_DISTRO = $ROS2_DISTRO" 13 | 14 | #Command to run roscore 15 | cmd1="source /opt/ros/$ROS1_DISTRO/setup.sh; roscore; exec /bin/bash" 16 | 17 | #Command to run ros1_bridge 18 | cmd2="source ~/ros2_ws/install/setup.bash; source /opt/ros/$ROS1_DISTRO/setup.bash; ros2 run ros1_bridge dynamic_bridge --bridge-all-topics; exec /bin/bash" 19 | 20 | #Command to play .bag from ROS1 21 | cmd3="source /opt/ros/$ROS1_DISTRO/setup.bash; rosparam set use_sim_time true; rosbag play $PWD/src/robot_localization/test/test1.bag --clock -d 5; exec /bin/bash" 22 | 23 | #Command to launch TestCase launch.py 24 | cmd4="source /opt/ros/$ROS2_DISTRO/setup.bash; source $PWD/install/setup.bash; ros2 launch robot_localization test_ukf_localization_node_bag1.launch.py; exec /bin/bash" 25 | 26 | #Command to run static_transform_publisher 27 | cmd5="source /opt/ros/$ROS2_DISTRO/setup.bash; ros2 run tf2_ros static_transform_publisher 0 -0.3 0.52 -1.570796327 0 1.570796327 base_link imu_link; exec /bin/bash" 28 | 29 | gnome-terminal --tab -t "roscore" -- /bin/bash -c "$cmd1" 30 | sleep 1 31 | gnome-terminal --tab -t "ros1_bridge" -- /bin/bash -c "$cmd2" 32 | gnome-terminal --tab -t "bag" -- /bin/bash -c "$cmd3" 33 | gnome-terminal --tab -t "TestCase_launch" -- /bin/bash -c "$cmd4" 34 | gnome-terminal --tab -t "static_transform_publisher" -- /bin/bash -c "$cmd5" 35 | -------------------------------------------------------------------------------- /src/robot_localization/test/test_ukf_localization_node_bag2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #************************ test_ukf_localization_node_bag2 *************************** 4 | 5 | # In this automatic Script, multiple terminals will be opened, user need to check the terminal on which bag is playing. Once bag is stoped, check the terminal on which launch.py is running, user will see, test cases result (Pass Or Fail) after pressing ctrl+c. 6 | 7 | $PWD = `pwd` 8 | echo "Current Working Directory = $PWD" 9 | ROS1_DISTRO=melodic 10 | ROS2_DISTRO=crystal 11 | echo "ROS1_DISTRO = $ROS1_DISTRO" 12 | echo "ROS2_DISTRO = $ROS2_DISTRO" 13 | 14 | #Command to run roscore 15 | cmd1="source /opt/ros/$ROS1_DISTRO/setup.sh; roscore; exec /bin/bash" 16 | 17 | #Command to run ros1_bridge 18 | cmd2="source ~/ros2_ws/install/setup.bash; source /opt/ros/$ROS1_DISTRO/setup.bash; ros2 run ros1_bridge dynamic_bridge --bridge-all-topics; exec /bin/bash" 19 | 20 | #Command to play .bag from ROS1 21 | cmd3="source /opt/ros/$ROS1_DISTRO/setup.bash; rosparam set use_sim_time true; rosbag play $PWD/src/robot_localization/test/test2.bag --clock -d 5; exec /bin/bash" 22 | 23 | #Command to launch TestCase launch.py 24 | cmd4="source /opt/ros/$ROS2_DISTRO/setup.bash; source $PWD/install/setup.bash; ros2 launch robot_localization test_ukf_localization_node_bag2.launch.py; exec /bin/bash" 25 | 26 | gnome-terminal --tab -t "roscore" -- /bin/bash -c "$cmd1" 27 | sleep 1 28 | gnome-terminal --tab -t "bag" -- /bin/bash -c "$cmd3" 29 | gnome-terminal --tab -t "TestCase_launch" -- /bin/bash -c "$cmd4" 30 | gnome-terminal --tab -t "ros1_bridge" -- /bin/bash -c "$cmd2" 31 | 32 | 33 | -------------------------------------------------------------------------------- /src/robot_localization/test/test_ukf_localization_node_bag3.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #************************ test_ukf_localization_node_bag3 *************************** 4 | 5 | # In this automatic Script, multiple terminals will be opened, user need to check the terminal on which bag is playing. Once bag is stoped, check the terminal on which launch.py is running, user will see, test cases result (Pass Or Fail) after pressing ctrl+c. 6 | 7 | $PWD = `pwd` 8 | echo "Current Working Directory = $PWD" 9 | ROS1_DISTRO=melodic 10 | ROS2_DISTRO=crystal 11 | echo "ROS1_DISTRO = $ROS1_DISTRO" 12 | echo "ROS2_DISTRO = $ROS2_DISTRO" 13 | 14 | #Command to run roscore 15 | cmd1="source /opt/ros/$ROS1_DISTRO/setup.sh; roscore; exec /bin/bash" 16 | 17 | #Command to run ros1_bridge 18 | cmd2="source ~/ros2_ws/install/setup.bash; source /opt/ros/$ROS1_DISTRO/setup.bash; ros2 run ros1_bridge dynamic_bridge --bridge-all-topics; exec /bin/bash" 19 | 20 | #Command to play .bag from ROS1 21 | cmd3="sleep 2; source /opt/ros/$ROS1_DISTRO/setup.bash; rosparam set /use_sim_time true; rosbag play $PWD/src/robot_localization/test/test3.bag --clock -d 5; exec /bin/bash" 22 | 23 | #Command to launch TestCase launch.py 24 | cmd4="sleep 2; source /opt/ros/$ROS2_DISTRO/setup.bash; source $PWD/install/setup.bash; ros2 launch robot_localization test_ukf_localization_node_bag3.launch.py; exec /bin/bash" 25 | 26 | gnome-terminal --tab -t "roscore" -- /bin/bash -c "$cmd1" 27 | sleep 1 28 | gnome-terminal --tab -t "ros1_bridge" -- /bin/bash -c "$cmd2" 29 | gnome-terminal --tab -t "bag" -- /bin/bash -c "$cmd3" 30 | gnome-terminal --tab -t "TestCase_launch" -- /bin/bash -c "$cmd4" 31 | 32 | -------------------------------------------------------------------------------- /src/turtlebot3/.travis.yml: -------------------------------------------------------------------------------- 1 | services: 2 | - docker 3 | 4 | language: 5 | - generic 6 | 7 | notifications: 8 | email: 9 | on_success: change 10 | on_failure: always 11 | recipients: 12 | - willson@robotis.com 13 | 14 | branches: 15 | only: 16 | - ros2 17 | - ros2-devel 18 | - foxy-devel 19 | 20 | install: 21 | - git clone --quiet --depth 1 https://github.com/ROBOTIS-GIT/ros2ci.git .ros2ci 22 | 23 | matrix: 24 | include: 25 | - script: .ros2ci/travis.bash foxy 26 | -------------------------------------------------------------------------------- /src/turtlebot3/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | Any contribution that you make to this repository will 2 | be under the Apache 2 License, as dictated by that 3 | [license](http://www.apache.org/licenses/LICENSE-2.0.html): 4 | 5 | ~~~ 6 | 5. Submission of Contributions. Unless You explicitly state otherwise, 7 | any Contribution intentionally submitted for inclusion in the Work 8 | by You to the Licensor shall be under the terms and conditions of 9 | this License, without any additional terms or conditions. 10 | Notwithstanding the above, nothing herein shall supersede or modify 11 | the terms of any separate license agreement you may have executed 12 | with Licensor regarding such Contributions. 13 | ~~~ 14 | 15 | Contributors must sign-off each commit by adding a `Signed-off-by: ...` 16 | line to commit messages to certify that they have the right to submit 17 | the code they are contributing to the project according to the 18 | [Developer Certificate of Origin (DCO)](https://developercertificate.org/). 19 | -------------------------------------------------------------------------------- /src/turtlebot3/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ISSUE TEMPLATE ver. 0.4.0 2 | 3 | 1. Which TurtleBot3 you have? 4 | 5 | - [ ] Burger 6 | - [ ] Waffle 7 | - [ ] Waffle Pi 8 | 9 | 2. Which ROS is working with TurtleBot3? 10 | 11 | - [ ] ROS 1 Kinetic Kame 12 | - [ ] ROS 1 Melodic Morenia 13 | - [ ] ROS 1 Noetic Ninjemys 14 | - [ ] ROS 2 Dashing Diademata 15 | - [ ] ROS 2 Eloquent Elusor 16 | - [ ] ROS 2 Foxy Fitzroy 17 | - [ ] etc (PLEASE, WRITE DOWN YOUR ROS VERSION HERE) 18 | 19 | 3. Which SBC(Single Board Computer) is working on TurtleBot3? 20 | 21 | - [ ] Raspberry Pi 3 22 | - [ ] Raspberry Pi 4 23 | - [ ] Intel Joule 570x 24 | - [ ] etc (PLEASE, WRITE DOWN YOUR SBC HERE) 25 | 26 | 4. Which OS you installed in SBC? 27 | 28 | - [ ] Raspbian 29 | - [ ] Ubuntu MATE 16.04 or later 30 | - [ ] Ubuntu Server 18.04 or later 31 | - [ ] Ubuntu Server 20.04 or later 32 | - [ ] etc (PLEASE, WRITE DOWN YOUR OS) 33 | 34 | 5. Which OS you installed in Remote PC? 35 | 36 | - [ ] Ubuntu 16.04 LTS (Xenial Xerus) 37 | - [ ] Ubuntu 18.04 LTS (Bionic Beaver) 38 | - [ ] Ubuntu 20.04 LTS (Focal Fossa) 39 | - [ ] Linux Mint 18.x 40 | - [ ] Linux Mint 19.x 41 | - [ ] etc (PLEASE, WRITE DOWN YOUR OS) 42 | 43 | 6. Write down software version and firmware version 44 | 45 | - Software version: [x.x.x] 46 | - Firmware version: [x.x.x] 47 | 48 | 7. Write down the commands you used in order 49 | 50 | - HERE 51 | 52 | 8. Copy and Paste your error message on terminal 53 | 54 | - HERE 55 | 56 | 9. Please, describe detailedly what difficulty you are in 57 | 58 | - HERE 59 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3.repos: -------------------------------------------------------------------------------- 1 | repositories: 2 | turtlebot3/turtlebot3: 3 | type: git 4 | url: https://github.com/ROBOTIS-GIT/turtlebot3.git 5 | version: foxy-devel 6 | turtlebot3/turtlebot3_msgs: 7 | type: git 8 | url: https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git 9 | version: foxy-devel 10 | turtlebot3/turtlebot3_simulations: 11 | type: git 12 | url: https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git 13 | version: foxy-devel 14 | utils/DynamixelSDK: 15 | type: git 16 | url: https://github.com/ROBOTIS-GIT/DynamixelSDK.git 17 | version: foxy-devel 18 | utils/hls_lfcd_lds_driver: 19 | type: git 20 | url: https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver.git 21 | version: foxy-devel 22 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.5) 2 | project(turtlebot3) 3 | find_package(ament_cmake REQUIRED) 4 | ament_package() 5 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | turtlebot3 5 | 2.1.1 6 | 7 | ROS 2 packages for TurtleBot3 8 | 9 | Will Son 10 | Apache 2.0 11 | http://turtlebot3.robotis.com 12 | https://github.com/ROBOTIS-GIT/turtlebot3 13 | https://github.com/ROBOTIS-GIT/turtlebot3/issues 14 | Darby Lim 15 | Ryan Shim 16 | Pyo 17 | ament_cmake 18 | turtlebot3_bringup 19 | turtlebot3_cartographer 20 | turtlebot3_description 21 | turtlebot3_example 22 | turtlebot3_navigation2 23 | turtlebot3_node 24 | turtlebot3_teleop 25 | 26 | ament_cmake 27 | 28 | 29 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_bringup/99-turtlebot3-cdc.rules: -------------------------------------------------------------------------------- 1 | #http://linux-tips.org/t/prevent-modem-manager-to-capture-usb-serial-devices/284/2. 2 | 3 | #cp rules /etc/udev/rules.d/ 4 | #sudo udevadm control --reload-rules 5 | #sudo udevadm trigger 6 | 7 | ATTRS{idVendor}=="0483" ATTRS{idProduct}=="5740", ENV{ID_MM_DEVICE_IGNORE}="1", MODE:="0666" 8 | ATTRS{idVendor}=="0483" ATTRS{idProduct}=="df11", MODE:="0666" 9 | ATTRS{idVendor}=="fff1" ATTRS{idProduct}=="ff48", ENV{ID_MM_DEVICE_IGNORE}="1", MODE:="0666" 10 | ATTRS{idVendor}=="10c4" ATTRS{idProduct}=="ea60", ENV{ID_MM_DEVICE_IGNORE}="1", MODE:="0666" -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_bringup/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Set minimum required version of cmake, project name and compile options 3 | ################################################################################ 4 | cmake_minimum_required(VERSION 3.5) 5 | project(turtlebot3_bringup) 6 | 7 | if(NOT CMAKE_CXX_STANDARD) 8 | set(CMAKE_CXX_STANDARD 14) 9 | endif() 10 | 11 | if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") 12 | add_compile_options(-Wall -Wextra -Wpedantic) 13 | endif() 14 | 15 | ################################################################################ 16 | # Find ament packages and libraries for ament and system dependencies 17 | ################################################################################ 18 | find_package(ament_cmake REQUIRED) 19 | 20 | ################################################################################ 21 | # Install 22 | ################################################################################ 23 | install( 24 | DIRECTORY launch param 25 | DESTINATION share/${PROJECT_NAME} 26 | ) 27 | 28 | ################################################################################ 29 | # Macro for ament package 30 | ################################################################################ 31 | ament_package() 32 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_bringup/launch/rviz2.launch.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # 3 | # Copyright 2019 ROBOTIS CO., LTD. 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | # Authors: Darby Lim 18 | 19 | import os 20 | 21 | from ament_index_python.packages import get_package_share_directory 22 | from launch import LaunchDescription 23 | from launch_ros.actions import Node 24 | 25 | 26 | def generate_launch_description(): 27 | rviz_config_dir = os.path.join( 28 | get_package_share_directory('turtlebot3_description'), 29 | 'rviz', 30 | 'model.rviz') 31 | 32 | return LaunchDescription([ 33 | Node( 34 | package='rviz2', 35 | executable='rviz2', 36 | name='rviz2', 37 | arguments=['-d', rviz_config_dir], 38 | output='screen'), 39 | ]) 40 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_bringup/launch/turtlebot3_state_publisher.launch.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # 3 | # Copyright 2019 ROBOTIS CO., LTD. 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | # Authors: Darby Lim 18 | 19 | import os 20 | 21 | from ament_index_python.packages import get_package_share_directory 22 | from launch import LaunchDescription 23 | from launch.actions import DeclareLaunchArgument 24 | from launch.substitutions import LaunchConfiguration 25 | from launch_ros.actions import Node 26 | 27 | 28 | def generate_launch_description(): 29 | TURTLEBOT3_MODEL = os.environ['TURTLEBOT3_MODEL'] 30 | 31 | use_sim_time = LaunchConfiguration('use_sim_time', default='false') 32 | urdf_file_name = 'turtlebot3_' + TURTLEBOT3_MODEL + '.urdf' 33 | 34 | print("urdf_file_name : {}".format(urdf_file_name)) 35 | 36 | urdf = os.path.join( 37 | get_package_share_directory('turtlebot3_description'), 38 | 'urdf', 39 | urdf_file_name) 40 | 41 | return LaunchDescription([ 42 | DeclareLaunchArgument( 43 | 'use_sim_time', 44 | default_value='false', 45 | description='Use simulation (Gazebo) clock if true'), 46 | 47 | Node( 48 | package='robot_state_publisher', 49 | executable='robot_state_publisher', 50 | name='robot_state_publisher', 51 | output='screen', 52 | parameters=[{'use_sim_time': use_sim_time}], 53 | arguments=[urdf]), 54 | ]) 55 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_bringup/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | turtlebot3_bringup 5 | 2.1.1 6 | 7 | ROS 2 launch scripts for starting the TurtleBot3 8 | 9 | Will Son 10 | Apache 2.0 11 | http://turtlebot3.robotis.com 12 | https://github.com/ROBOTIS-GIT/turtlebot3 13 | https://github.com/ROBOTIS-GIT/turtlebot3/issues 14 | Darby Lim 15 | Pyo 16 | ament_cmake 17 | hls_lfcd_lds_driver 18 | robot_state_publisher 19 | rviz2 20 | turtlebot3_description 21 | turtlebot3_node 22 | 23 | ament_cmake 24 | 25 | 26 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_bringup/param/burger.yaml: -------------------------------------------------------------------------------- 1 | turtlebot3_node: 2 | ros__parameters: 3 | 4 | opencr: 5 | id: 200 6 | baud_rate: 1000000 7 | protocol_version: 2.0 8 | 9 | wheels: 10 | separation: 0.160 11 | radius: 0.033 12 | 13 | motors: 14 | profile_acceleration_constant: 214.577 15 | 16 | # [rev/min2] 17 | # ref) http://emanual.robotis.com/docs/en/dxl/x/xl430-w250/#profile-acceleration 18 | profile_acceleration: 0.0 19 | 20 | sensors: 21 | bumper_1: false 22 | bumper_2: false 23 | 24 | illumination: false 25 | 26 | ir: false 27 | 28 | sonar: false 29 | 30 | diff_drive_controller: 31 | ros__parameters: 32 | 33 | odometry: 34 | publish_tf: true 35 | use_imu: true 36 | frame_id: "odom" 37 | child_frame_id: "base_footprint" 38 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_bringup/param/waffle.yaml: -------------------------------------------------------------------------------- 1 | turtlebot3_node: 2 | ros__parameters: 3 | 4 | opencr: 5 | id: 200 6 | baud_rate: 1000000 7 | protocol_version: 2.0 8 | 9 | wheels: 10 | separation: 0.287 11 | radius: 0.033 12 | 13 | motors: 14 | profile_acceleration_constant: 214.577 15 | 16 | # [rev/min2] 17 | # ref) http://emanual.robotis.com/docs/en/dxl/x/xl430-w250/#profile-acceleration 18 | profile_acceleration: 0.0 19 | 20 | sensors: 21 | bumper_1: false 22 | bumper_2: false 23 | 24 | illumination: false 25 | 26 | ir: false 27 | 28 | sonar: false 29 | 30 | diff_drive_controller: 31 | ros__parameters: 32 | 33 | odometry: 34 | publish_tf: true 35 | use_imu: true 36 | frame_id: "odom" 37 | child_frame_id: "base_footprint" 38 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_bringup/param/waffle_pi.yaml: -------------------------------------------------------------------------------- 1 | turtlebot3_node: 2 | ros__parameters: 3 | 4 | opencr: 5 | id: 200 6 | baud_rate: 1000000 7 | protocol_version: 2.0 8 | 9 | wheels: 10 | separation: 0.287 11 | radius: 0.033 12 | 13 | motors: 14 | profile_acceleration_constant: 214.577 15 | 16 | # [rev/min2] 17 | # ref) http://emanual.robotis.com/docs/en/dxl/x/xl430-w250/#profile-acceleration 18 | profile_acceleration: 0.0 19 | 20 | sensors: 21 | bumper_1: false 22 | bumper_2: false 23 | 24 | illumination: false 25 | 26 | ir: false 27 | 28 | sonar: false 29 | 30 | diff_drive_controller: 31 | ros__parameters: 32 | 33 | odometry: 34 | publish_tf: true 35 | use_imu: true 36 | frame_id: "odom" 37 | child_frame_id: "base_footprint" 38 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_cartographer/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Set minimum required version of cmake, project name and compile options 3 | ################################################################################ 4 | cmake_minimum_required(VERSION 3.5) 5 | project(turtlebot3_cartographer) 6 | 7 | ################################################################################ 8 | # Find ament packages and libraries for ament and system dependencies 9 | ################################################################################ 10 | find_package(ament_cmake REQUIRED) 11 | 12 | ################################################################################ 13 | # Install 14 | ################################################################################ 15 | install( 16 | DIRECTORY config launch rviz 17 | DESTINATION share/${PROJECT_NAME} 18 | ) 19 | 20 | ################################################################################ 21 | # Macro for ament package 22 | ################################################################################ 23 | ament_package() 24 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_cartographer/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | turtlebot3_cartographer 5 | 2.1.1 6 | 7 | ROS 2 launch scripts for cartographer 8 | 9 | Will Son 10 | Apache 2.0 11 | http://turtlebot3.robotis.com 12 | https://github.com/ROBOTIS-GIT/turtlebot3 13 | https://github.com/ROBOTIS-GIT/turtlebot3/issues 14 | Darby Lim 15 | Pyo 16 | ament_cmake 17 | cartographer_ros 18 | 19 | ament_cmake 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_ci.repos: -------------------------------------------------------------------------------- 1 | repositories: 2 | turtlebot3/turtlebot3_msgs: 3 | type: git 4 | url: https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git 5 | version: foxy-devel 6 | utils/DynamixelSDK: 7 | type: git 8 | url: https://github.com/ROBOTIS-GIT/DynamixelSDK.git 9 | version: foxy-devel 10 | utils/hls_lfcd_lds_driver: 11 | type: git 12 | url: https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver.git 13 | version: foxy-devel 14 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_description/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Set minimum required version of cmake, project name and compile options 3 | ################################################################################ 4 | cmake_minimum_required(VERSION 3.5) 5 | project(turtlebot3_description) 6 | 7 | if(NOT CMAKE_CXX_STANDARD) 8 | set(CMAKE_CXX_STANDARD 14) 9 | endif() 10 | 11 | if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") 12 | add_compile_options(-Wall -Wextra -Wpedantic) 13 | endif() 14 | 15 | ################################################################################ 16 | # Find ament packages and libraries for ament and system dependencies 17 | ################################################################################ 18 | find_package(ament_cmake REQUIRED) 19 | find_package(urdf REQUIRED) 20 | 21 | ################################################################################ 22 | # Install 23 | ################################################################################ 24 | install(DIRECTORY meshes rviz urdf 25 | DESTINATION share/${PROJECT_NAME} 26 | ) 27 | 28 | ################################################################################ 29 | # Macro for ament package 30 | ################################################################################ 31 | ament_package() 32 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_description/meshes/bases/burger_base.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_description/meshes/bases/burger_base.stl -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_description/meshes/bases/waffle_base.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_description/meshes/bases/waffle_base.stl -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_description/meshes/bases/waffle_pi_base.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_description/meshes/bases/waffle_pi_base.stl -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_description/meshes/sensors/astra.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_description/meshes/sensors/astra.jpg -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_description/meshes/sensors/lds.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_description/meshes/sensors/lds.stl -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_description/meshes/sensors/r200.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_description/meshes/sensors/r200.jpg -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_description/meshes/wheels/left_tire.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_description/meshes/wheels/left_tire.stl -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_description/meshes/wheels/right_tire.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_description/meshes/wheels/right_tire.stl -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_description/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | turtlebot3_description 5 | 2.1.1 6 | 7 | 3D models of the TurtleBot3 for simulation and visualization 8 | 9 | Will Son 10 | Apache 2.0 11 | http://turtlebot3.robotis.com 12 | https://github.com/ROBOTIS-GIT/turtlebot3 13 | https://github.com/ROBOTIS-GIT/turtlebot3/issues 14 | Darby Lim 15 | Pyo 16 | ament_cmake 17 | urdf 18 | 19 | ament_cmake 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_description/urdf/common_properties.urdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_example/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | turtlebot3_example 5 | 2.1.1 6 | 7 | This package provides four basic examples for TurtleBot3 (i.e., interactive marker, object detection, patrol and position control). 8 | 9 | Will Son 10 | Apache 2.0 11 | http://turtlebot3.robotis.com 12 | https://github.com/ROBOTIS-GIT/turtlebot3 13 | https://github.com/ROBOTIS-GIT/turtlebot3/issues 14 | Ryan Shim 15 | Gilbert 16 | ament_cmake 17 | geometry_msgs 18 | nav_msgs 19 | rclpy 20 | sensor_msgs 21 | turtlebot3_msgs 22 | 23 | ament_python 24 | 25 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_example/resource/turtlebot3_example: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_example/resource/turtlebot3_example -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_example/setup.cfg: -------------------------------------------------------------------------------- 1 | [develop] 2 | script-dir=$base/lib/turtlebot3_example 3 | [install] 4 | install-scripts=$base/lib/turtlebot3_example 5 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_example/turtlebot3_example/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_example/turtlebot3_example/__init__.py -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_obstacle_detection/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_obstacle_detection/__init__.py -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_obstacle_detection/main.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # 3 | # Copyright 2019 ROBOTIS CO., LTD. 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | # Authors: Ryan Shim, Gilbert 18 | 19 | import rclpy 20 | 21 | from turtlebot3_example.turtlebot3_obstacle_detection.turtlebot3_obstacle_detection \ 22 | import Turtlebot3ObstacleDetection 23 | 24 | 25 | def main(args=None): 26 | rclpy.init(args=args) 27 | turtlebot3_obstacle_detection = Turtlebot3ObstacleDetection() 28 | rclpy.spin(turtlebot3_obstacle_detection) 29 | 30 | turtlebot3_obstacle_detection.destroy_node() 31 | rclpy.shutdown() 32 | 33 | 34 | if __name__ == '__main__': 35 | main() 36 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_patrol_client/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_patrol_client/__init__.py -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_patrol_client/main.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # 3 | # Copyright 2019 ROBOTIS CO., LTD. 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | # Authors: Ryan Shim, Gilbert 18 | 19 | import rclpy 20 | 21 | from turtlebot3_example.turtlebot3_patrol_client.turtlebot3_patrol_client \ 22 | import Turtlebot3PatrolClient 23 | 24 | 25 | def main(args=None): 26 | rclpy.init(args=args) 27 | turtlebot3_patrol_client = Turtlebot3PatrolClient() 28 | rclpy.spin(turtlebot3_patrol_client) 29 | 30 | 31 | if __name__ == '__main__': 32 | main() 33 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_patrol_server/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_patrol_server/__init__.py -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_patrol_server/main.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # 3 | # Copyright 2019 ROBOTIS CO., LTD. 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | # Authors: Ryan Shim, Gilbert 18 | 19 | import rclpy 20 | 21 | from turtlebot3_example.turtlebot3_patrol_server.turtlebot3_patrol_server \ 22 | import Turtlebot3PatrolServer 23 | 24 | 25 | def main(args=None): 26 | rclpy.init(args=args) 27 | turtlebot3_patrol_server = Turtlebot3PatrolServer() 28 | rclpy.spin(turtlebot3_patrol_server) 29 | 30 | turtlebot3_patrol_server.destroy() 31 | rclpy.shutdown() 32 | 33 | 34 | if __name__ == '__main__': 35 | main() 36 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_patrol_server/turtlebot3_path.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # 3 | # Copyright 2019 ROBOTIS CO., LTD. 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | # Authors: Ryan Shim, Gilbert 18 | 19 | from geometry_msgs.msg import Twist 20 | 21 | 22 | class Turtlebot3Path(): 23 | 24 | def drive_circle(radius, velocity): 25 | twist = Twist() 26 | linear_velocity = velocity # unit: m/s 27 | angular_velocity = linear_velocity / radius # unit: rad/s 28 | 29 | twist.linear.x = linear_velocity 30 | twist.angular.z = angular_velocity 31 | 32 | return twist 33 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_position_control/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_position_control/__init__.py -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_position_control/main.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # 3 | # Copyright 2019 ROBOTIS CO., LTD. 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | # Authors: Ryan Shim, Gilbert 18 | 19 | import rclpy 20 | 21 | from turtlebot3_example.turtlebot3_position_control.turtlebot3_position_control \ 22 | import Turtlebot3PositionControl 23 | 24 | 25 | def main(args=None): 26 | rclpy.init(args=args) 27 | turtlebot3_position_control = Turtlebot3PositionControl() 28 | rclpy.spin(turtlebot3_position_control) 29 | 30 | turtlebot3_position_control.destroy_node() 31 | rclpy.shutdown() 32 | 33 | 34 | if __name__ == '__main__': 35 | main() 36 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_position_control/turtlebot3_path.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # 3 | # Copyright 2019 ROBOTIS CO., LTD. 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | # Authors: Ryan Shim, Gilbert 18 | 19 | import math 20 | 21 | from geometry_msgs.msg import Twist 22 | 23 | 24 | class Turtlebot3Path(): 25 | 26 | def turn(angle, angular_velocity, step): 27 | twist = Twist() 28 | 29 | if math.fabs(angle) > 0.01: # 0.01 is small enough value 30 | if angle >= math.pi: 31 | twist.angular.z = -angular_velocity 32 | elif math.pi > angle and angle >= 0: 33 | twist.angular.z = angular_velocity 34 | elif 0 > angle and angle >= -math.pi: 35 | twist.angular.z = -angular_velocity 36 | elif angle > -math.pi: 37 | twist.angular.z = angular_velocity 38 | else: 39 | step += 1 40 | 41 | return twist, step 42 | 43 | def go_straight(distance, linear_velocity, step): 44 | twist = Twist() 45 | 46 | if distance > 0.01: # 0.01 is small enough value 47 | twist.linear.x = linear_velocity 48 | else: 49 | step += 1 50 | 51 | return twist, step 52 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_navigation2/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Set minimum required version of cmake, project name and compile options 3 | ################################################################################ 4 | cmake_minimum_required(VERSION 3.5) 5 | project(turtlebot3_navigation2) 6 | 7 | ################################################################################ 8 | # Find ament packages and libraries for ament and system dependencies 9 | ################################################################################ 10 | find_package(ament_cmake REQUIRED) 11 | 12 | ################################################################################ 13 | # Install 14 | ################################################################################ 15 | install( 16 | DIRECTORY launch map param rviz 17 | DESTINATION share/${PROJECT_NAME} 18 | ) 19 | 20 | ################################################################################ 21 | # Macro for ament package 22 | ################################################################################ 23 | ament_package() 24 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_navigation2/map/turtlebot3_world.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_navigation2/map/turtlebot3_world.pgm -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_navigation2/map/turtlebot3_world.yaml: -------------------------------------------------------------------------------- 1 | image: turtlebot3_world.pgm 2 | resolution: 0.050000 3 | origin: [-10.000000, -10.000000, 0.000000] 4 | negate: 0 5 | occupied_thresh: 0.65 6 | free_thresh: 0.196 7 | 8 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_navigation2/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | turtlebot3_navigation2 5 | 2.1.1 6 | 7 | ROS 2 launch scripts for navigation2 8 | 9 | Will Son 10 | Apache 2.0 11 | http://turtlebot3.robotis.com 12 | https://github.com/ROBOTIS-GIT/turtlebot3 13 | https://github.com/ROBOTIS-GIT/turtlebot3/issues 14 | Darby Lim 15 | Pyo 16 | ament_cmake 17 | nav2_bringup 18 | 19 | ament_cmake 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_node/CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2 | Changelog for package turtlebot3_node 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 | 5 | 2.1.1 (2021-01-06) 6 | ------------------ 7 | * turtlebot3.repos updated to target correct distro 8 | * galactic-devel branch created 9 | * Eloquent EOL 10 | * Contributors: Ashe Kim, Will Son 11 | 12 | 2.1.0 (2020-06-22) 13 | ------------------ 14 | * ROS 2 Foxy Fitzroy supported 15 | * ROS 2 Eloquent Elusor supported 16 | * Contributors: Ryan, Ashe 17 | 18 | 2.0.1 (2019-09-05) 19 | ------------------ 20 | * Updated the CHANGELOG and version to release binary packages 21 | * Modified dependency packages 22 | * Contributors: Darby Lim, Pyo 23 | 24 | 2.0.0 (2019-08-20) 25 | ------------------ 26 | * Supported ROS 2 Dashing Diademata 27 | * Updated the CHANGELOG and version to release binary packages 28 | * Fixed ROS2 dependencies and library install `#454 `_ 29 | * Fixed scan rate to 5hz `#418 `_ 30 | * Initialized joint states variables `#411 `_ 31 | * Contributors: Matt Hansen, Emerson Knapp, Darby Lim, Pyo 32 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_node/include/turtlebot3_node/devices/devices.hpp: -------------------------------------------------------------------------------- 1 | // Copyright 2019 ROBOTIS CO., LTD. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | // 15 | // Author: Darby Lim 16 | 17 | #ifndef TURTLEBOT3_NODE__DEVICES__DEVICES_HPP_ 18 | #define TURTLEBOT3_NODE__DEVICES__DEVICES_HPP_ 19 | 20 | #include 21 | 22 | #include 23 | #include 24 | #include 25 | 26 | #include "turtlebot3_node/control_table.hpp" 27 | #include "turtlebot3_node/dynamixel_sdk_wrapper.hpp" 28 | 29 | namespace robotis 30 | { 31 | namespace turtlebot3 32 | { 33 | extern const ControlTable extern_control_table; 34 | namespace devices 35 | { 36 | class Devices 37 | { 38 | public: 39 | explicit Devices( 40 | std::shared_ptr & nh, 41 | std::shared_ptr & dxl_sdk_wrapper) 42 | : nh_(nh), 43 | dxl_sdk_wrapper_(dxl_sdk_wrapper) 44 | { 45 | } 46 | 47 | virtual void command(const void * request, void * response) = 0; 48 | 49 | protected: 50 | std::shared_ptr nh_; 51 | std::shared_ptr dxl_sdk_wrapper_; 52 | rclcpp::QoS qos_ = rclcpp::QoS(rclcpp::ServicesQoS()); 53 | }; 54 | } // namespace devices 55 | } // namespace turtlebot3 56 | } // namespace robotis 57 | #endif // TURTLEBOT3_NODE__DEVICES__DEVICES_HPP_ 58 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_node/include/turtlebot3_node/devices/motor_power.hpp: -------------------------------------------------------------------------------- 1 | // Copyright 2019 ROBOTIS CO., LTD. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | // 15 | // Author: Darby Lim 16 | 17 | #ifndef TURTLEBOT3_NODE__DEVICES__MOTOR_POWER_HPP_ 18 | #define TURTLEBOT3_NODE__DEVICES__MOTOR_POWER_HPP_ 19 | 20 | #include 21 | 22 | #include 23 | #include 24 | 25 | #include "turtlebot3_node/devices/devices.hpp" 26 | 27 | namespace robotis 28 | { 29 | namespace turtlebot3 30 | { 31 | namespace devices 32 | { 33 | class MotorPower : public Devices 34 | { 35 | public: 36 | static void request( 37 | rclcpp::Client::SharedPtr client, 38 | std_srvs::srv::SetBool::Request req); 39 | 40 | explicit MotorPower( 41 | std::shared_ptr & nh, 42 | std::shared_ptr & dxl_sdk_wrapper, 43 | const std::string & server_name = "motor_power"); 44 | 45 | void command(const void * request, void * response) override; 46 | 47 | private: 48 | rclcpp::Service::SharedPtr srv_; 49 | }; 50 | } // namespace devices 51 | } // namespace turtlebot3 52 | } // namespace robotis 53 | #endif // TURTLEBOT3_NODE__DEVICES__MOTOR_POWER_HPP_ 54 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_node/include/turtlebot3_node/devices/reset.hpp: -------------------------------------------------------------------------------- 1 | // Copyright 2019 ROBOTIS CO., LTD. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | // 15 | // Author: Darby Lim 16 | 17 | #ifndef TURTLEBOT3_NODE__DEVICES__RESET_HPP_ 18 | #define TURTLEBOT3_NODE__DEVICES__RESET_HPP_ 19 | 20 | #include 21 | 22 | #include 23 | #include 24 | 25 | #include "turtlebot3_node/devices/devices.hpp" 26 | 27 | namespace robotis 28 | { 29 | namespace turtlebot3 30 | { 31 | namespace devices 32 | { 33 | class Reset : public Devices 34 | { 35 | public: 36 | static void request( 37 | rclcpp::Client::SharedPtr client, 38 | std_srvs::srv::Trigger::Request req); 39 | 40 | explicit Reset( 41 | std::shared_ptr & nh, 42 | std::shared_ptr & dxl_sdk_wrapper, 43 | const std::string & server_name = "reset"); 44 | 45 | void command(const void * request, void * response) override; 46 | 47 | private: 48 | rclcpp::Service::SharedPtr srv_; 49 | }; 50 | } // namespace devices 51 | } // namespace turtlebot3 52 | } // namespace robotis 53 | #endif // TURTLEBOT3_NODE__DEVICES__RESET_HPP_ 54 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_node/include/turtlebot3_node/devices/sound.hpp: -------------------------------------------------------------------------------- 1 | // Copyright 2019 ROBOTIS CO., LTD. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | // 15 | // Author: Darby Lim 16 | 17 | #ifndef TURTLEBOT3_NODE__DEVICES__SOUND_HPP_ 18 | #define TURTLEBOT3_NODE__DEVICES__SOUND_HPP_ 19 | 20 | #include 21 | 22 | #include 23 | #include 24 | 25 | #include "turtlebot3_node/devices/devices.hpp" 26 | 27 | namespace robotis 28 | { 29 | namespace turtlebot3 30 | { 31 | namespace devices 32 | { 33 | class Sound : public Devices 34 | { 35 | public: 36 | static void request( 37 | rclcpp::Client::SharedPtr client, 38 | turtlebot3_msgs::srv::Sound::Request req); 39 | 40 | explicit Sound( 41 | std::shared_ptr & nh, 42 | std::shared_ptr & dxl_sdk_wrapper, 43 | const std::string & server_name = "sound"); 44 | 45 | void command(const void * request, void * response) override; 46 | 47 | private: 48 | rclcpp::Service::SharedPtr srv_; 49 | }; 50 | } // namespace devices 51 | } // namespace turtlebot3 52 | } // namespace robotis 53 | #endif // TURTLEBOT3_NODE__DEVICES__SOUND_HPP_ 54 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_node/include/turtlebot3_node/diff_drive_controller.hpp: -------------------------------------------------------------------------------- 1 | // Copyright 2019 ROBOTIS CO., LTD. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | // 15 | // Author: Darby Lim 16 | 17 | #ifndef TURTLEBOT3_NODE__DIFF_DRIVE_CONTROLLER_HPP_ 18 | #define TURTLEBOT3_NODE__DIFF_DRIVE_CONTROLLER_HPP_ 19 | 20 | #include 21 | 22 | #include 23 | 24 | #include "turtlebot3_node/odometry.hpp" 25 | 26 | namespace robotis 27 | { 28 | namespace turtlebot3 29 | { 30 | class DiffDriveController : public rclcpp::Node 31 | { 32 | public: 33 | explicit DiffDriveController(const float wheel_seperation, const float wheel_radius); 34 | virtual ~DiffDriveController() {} 35 | 36 | private: 37 | std::shared_ptr nh_; 38 | std::unique_ptr odometry_; 39 | }; 40 | } // namespace turtlebot3 41 | } // namespace robotis 42 | #endif // TURTLEBOT3_NODE__DIFF_DRIVE_CONTROLLER_HPP_ 43 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_node/include/turtlebot3_node/sensors/battery_state.hpp: -------------------------------------------------------------------------------- 1 | // Copyright 2019 ROBOTIS CO., LTD. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | // 15 | // Author: Darby Lim 16 | 17 | #ifndef TURTLEBOT3_NODE__SENSORS__BATTERY_STATE_HPP_ 18 | #define TURTLEBOT3_NODE__SENSORS__BATTERY_STATE_HPP_ 19 | 20 | #include 21 | 22 | #include 23 | #include 24 | 25 | #include "turtlebot3_node/sensors/sensors.hpp" 26 | 27 | namespace robotis 28 | { 29 | namespace turtlebot3 30 | { 31 | namespace sensors 32 | { 33 | class BatteryState : public Sensors 34 | { 35 | public: 36 | explicit BatteryState( 37 | std::shared_ptr & nh, 38 | const std::string & topic_name = "battery_state"); 39 | 40 | void publish( 41 | const rclcpp::Time & now, 42 | std::shared_ptr & dxl_sdk_wrapper) override; 43 | 44 | private: 45 | rclcpp::Publisher::SharedPtr pub_; 46 | }; 47 | } // namespace sensors 48 | } // namespace turtlebot3 49 | } // namespace robotis 50 | #endif // TURTLEBOT3_NODE__SENSORS__BATTERY_STATE_HPP_ 51 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_node/include/turtlebot3_node/sensors/imu.hpp: -------------------------------------------------------------------------------- 1 | // Copyright 2019 ROBOTIS CO., LTD. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | // 15 | // Author: Darby Lim 16 | 17 | #ifndef TURTLEBOT3_NODE__SENSORS__IMU_HPP_ 18 | #define TURTLEBOT3_NODE__SENSORS__IMU_HPP_ 19 | 20 | #include 21 | #include 22 | 23 | #include 24 | #include 25 | 26 | #include "turtlebot3_node/sensors/sensors.hpp" 27 | 28 | namespace robotis 29 | { 30 | namespace turtlebot3 31 | { 32 | namespace sensors 33 | { 34 | class Imu : public Sensors 35 | { 36 | public: 37 | explicit Imu( 38 | std::shared_ptr & nh, 39 | const std::string & imu_topic_name = "imu", 40 | const std::string & mag_topic_name = "magnetic_field", 41 | const std::string & frame_id = "imu_link"); 42 | 43 | void publish( 44 | const rclcpp::Time & now, 45 | std::shared_ptr & dxl_sdk_wrapper) override; 46 | 47 | private: 48 | rclcpp::Publisher::SharedPtr imu_pub_; 49 | rclcpp::Publisher::SharedPtr mag_pub_; 50 | }; 51 | } // namespace sensors 52 | } // namespace turtlebot3 53 | } // namespace robotis 54 | #endif // TURTLEBOT3_NODE__SENSORS__IMU_HPP_ 55 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_node/include/turtlebot3_node/sensors/joint_state.hpp: -------------------------------------------------------------------------------- 1 | // Copyright 2019 ROBOTIS CO., LTD. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | // 15 | // Author: Darby Lim 16 | 17 | #ifndef TURTLEBOT3_NODE__SENSORS__JOINT_STATE_HPP_ 18 | #define TURTLEBOT3_NODE__SENSORS__JOINT_STATE_HPP_ 19 | 20 | #include 21 | 22 | #include 23 | #include 24 | 25 | #include "turtlebot3_node/sensors/sensors.hpp" 26 | 27 | namespace robotis 28 | { 29 | namespace turtlebot3 30 | { 31 | namespace sensors 32 | { 33 | constexpr uint8_t JOINT_NUM = 2; 34 | 35 | // ref) http://emanual.robotis.com/docs/en/dxl/x/xl430-w250/#goal-velocity104 36 | constexpr double RPM_TO_MS = 0.229 * 0.0034557519189487725; 37 | 38 | // 0.087890625[deg] * 3.14159265359 / 180 = 0.001533981f 39 | constexpr double TICK_TO_RAD = 0.001533981; 40 | 41 | class JointState : public Sensors 42 | { 43 | public: 44 | explicit JointState( 45 | std::shared_ptr & nh, 46 | const std::string & topic_name = "joint_states", 47 | const std::string & frame_id = "base_link"); 48 | 49 | void publish( 50 | const rclcpp::Time & now, 51 | std::shared_ptr & dxl_sdk_wrapper) override; 52 | 53 | private: 54 | rclcpp::Publisher::SharedPtr pub_; 55 | }; 56 | } // namespace sensors 57 | } // namespace turtlebot3 58 | } // namespace robotis 59 | #endif // TURTLEBOT3_NODE__SENSORS__JOINT_STATE_HPP_ 60 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_node/include/turtlebot3_node/sensors/sensor_state.hpp: -------------------------------------------------------------------------------- 1 | // Copyright 2019 ROBOTIS CO., LTD. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | // 15 | // Author: Darby Lim 16 | 17 | #ifndef TURTLEBOT3_NODE__SENSORS__SENSOR_STATE_HPP_ 18 | #define TURTLEBOT3_NODE__SENSORS__SENSOR_STATE_HPP_ 19 | 20 | #include 21 | 22 | #include 23 | #include 24 | 25 | #include "turtlebot3_node/sensors/sensors.hpp" 26 | 27 | namespace robotis 28 | { 29 | namespace turtlebot3 30 | { 31 | namespace sensors 32 | { 33 | class SensorState : public Sensors 34 | { 35 | public: 36 | explicit SensorState( 37 | std::shared_ptr & nh, 38 | const std::string & topic_name = "sensor_state", 39 | const bool & bumper_forward = false, 40 | const bool & bumper_backward = false, 41 | const bool & cliff = false, 42 | const bool & sonar = false, 43 | const bool & illumination = false); 44 | 45 | void publish( 46 | const rclcpp::Time & now, 47 | std::shared_ptr & dxl_sdk_wrapper) override; 48 | 49 | private: 50 | rclcpp::Publisher::SharedPtr pub_; 51 | 52 | bool bumper_forward_; 53 | bool bumper_backward_; 54 | bool cliff_; 55 | bool sonar_; 56 | bool illumination_; 57 | }; 58 | } // namespace sensors 59 | } // namespace turtlebot3 60 | } // namespace robotis 61 | #endif // TURTLEBOT3_NODE__SENSORS__SENSOR_STATE_HPP_ 62 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_node/include/turtlebot3_node/sensors/sensors.hpp: -------------------------------------------------------------------------------- 1 | // Copyright 2019 ROBOTIS CO., LTD. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | // 15 | // Author: Darby Lim 16 | 17 | #ifndef TURTLEBOT3_NODE__SENSORS__SENSORS_HPP_ 18 | #define TURTLEBOT3_NODE__SENSORS__SENSORS_HPP_ 19 | 20 | #include 21 | 22 | #include 23 | #include 24 | #include 25 | 26 | #include "turtlebot3_node/control_table.hpp" 27 | #include "turtlebot3_node/dynamixel_sdk_wrapper.hpp" 28 | 29 | namespace robotis 30 | { 31 | namespace turtlebot3 32 | { 33 | extern const ControlTable extern_control_table; 34 | namespace sensors 35 | { 36 | class Sensors 37 | { 38 | public: 39 | explicit Sensors( 40 | std::shared_ptr & nh, 41 | const std::string & frame_id = "") 42 | : nh_(nh), 43 | frame_id_(frame_id) 44 | { 45 | } 46 | 47 | virtual void publish( 48 | const rclcpp::Time & now, 49 | std::shared_ptr & dxl_sdk_wrapper) = 0; 50 | 51 | protected: 52 | std::shared_ptr nh_; 53 | std::string frame_id_; 54 | rclcpp::QoS qos_ = rclcpp::QoS(rclcpp::KeepLast(10)); 55 | }; 56 | } // namespace sensors 57 | } // namespace turtlebot3 58 | } // namespace robotis 59 | #endif // TURTLEBOT3_NODE__SENSORS__SENSORS_HPP_ 60 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_node/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | turtlebot3_node 5 | 2.1.1 6 | 7 | TurtleBot3 driver node that include diff drive controller, odometry and tf node 8 | 9 | Will Son 10 | Apache 2.0 11 | http://turtlebot3.robotis.com 12 | https://github.com/ROBOTIS-GIT/turtlebot3 13 | https://github.com/ROBOTIS-GIT/turtlebot3/issues 14 | Darby Lim 15 | Pyo 16 | ament_cmake 17 | dynamixel_sdk 18 | geometry_msgs 19 | message_filters 20 | nav_msgs 21 | rclcpp 22 | rcutils 23 | sensor_msgs 24 | std_msgs 25 | std_srvs 26 | tf2 27 | tf2_ros 28 | turtlebot3_msgs 29 | 30 | ament_cmake 31 | 32 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_node/param/burger.yaml: -------------------------------------------------------------------------------- 1 | turtlebot3_node: 2 | ros__parameters: 3 | 4 | opencr: 5 | id: 200 6 | baud_rate: 1000000 7 | protocol_version: 2.0 8 | 9 | wheels: 10 | separation: 0.160 11 | radius: 0.033 12 | 13 | motors: 14 | profile_acceleration_constant: 214.577 15 | 16 | # [rev/min2] 17 | # ref) http://emanual.robotis.com/docs/en/dxl/x/xl430-w250/#profile-acceleration 18 | profile_acceleration: 0.0 19 | 20 | sensors: 21 | bumper_1: false 22 | bumper_2: false 23 | 24 | illumination: false 25 | 26 | ir: false 27 | 28 | sonar: false 29 | 30 | diff_drive_controller: 31 | ros__parameters: 32 | 33 | odometry: 34 | publish_tf: true 35 | use_imu: true 36 | frame_id: "odom" 37 | child_frame_id: "base_footprint" 38 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_node/param/waffle.yaml: -------------------------------------------------------------------------------- 1 | turtlebot3_node: 2 | ros__parameters: 3 | 4 | opencr: 5 | id: 200 6 | baud_rate: 1000000 7 | protocol_version: 2.0 8 | 9 | wheels: 10 | separation: 0.287 11 | radius: 0.033 12 | 13 | motors: 14 | profile_acceleration_constant: 214.577 15 | 16 | # [rev/min2] 17 | # ref) http://emanual.robotis.com/docs/en/dxl/x/xl430-w250/#profile-acceleration 18 | profile_acceleration: 0.0 19 | 20 | sensors: 21 | bumper_1: false 22 | bumper_2: false 23 | 24 | illumination: false 25 | 26 | ir: false 27 | 28 | sonar: false 29 | 30 | diff_drive_controller: 31 | ros__parameters: 32 | 33 | odometry: 34 | publish_tf: true 35 | use_imu: true 36 | frame_id: "odom" 37 | child_frame_id: "base_footprint" 38 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_node/param/waffle_pi.yaml: -------------------------------------------------------------------------------- 1 | turtlebot3_node: 2 | ros__parameters: 3 | 4 | opencr: 5 | id: 200 6 | baud_rate: 1000000 7 | protocol_version: 2.0 8 | 9 | wheels: 10 | separation: 0.287 11 | radius: 0.033 12 | 13 | motors: 14 | profile_acceleration_constant: 214.577 15 | 16 | # [rev/min2] 17 | # ref) http://emanual.robotis.com/docs/en/dxl/x/xl430-w250/#profile-acceleration 18 | profile_acceleration: 0.0 19 | 20 | sensors: 21 | bumper_1: false 22 | bumper_2: false 23 | 24 | illumination: false 25 | 26 | ir: false 27 | 28 | sonar: false 29 | 30 | diff_drive_controller: 31 | ros__parameters: 32 | 33 | odometry: 34 | publish_tf: true 35 | use_imu: true 36 | frame_id: "odom" 37 | child_frame_id: "base_footprint" 38 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_node/src/diff_drive_controller.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2019 ROBOTIS CO., LTD. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | // 15 | // Author: Darby Lim 16 | 17 | #include "turtlebot3_node/diff_drive_controller.hpp" 18 | 19 | #include 20 | 21 | using robotis::turtlebot3::DiffDriveController; 22 | 23 | DiffDriveController::DiffDriveController(const float wheel_seperation, const float wheel_radius) 24 | : Node("diff_drive_controller", rclcpp::NodeOptions().use_intra_process_comms(true)) 25 | { 26 | nh_ = std::shared_ptr<::rclcpp::Node>(this, [](::rclcpp::Node *) {}); 27 | 28 | odometry_ = std::make_unique( 29 | nh_, 30 | wheel_seperation, 31 | wheel_radius); 32 | 33 | RCLCPP_INFO(this->get_logger(), "Run!"); 34 | } 35 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_node/src/sensors/battery_state.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2019 ROBOTIS CO., LTD. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | // 15 | // Author: Darby Lim 16 | 17 | #include "turtlebot3_node/sensors/battery_state.hpp" 18 | 19 | #include 20 | #include 21 | #include 22 | 23 | using robotis::turtlebot3::sensors::BatteryState; 24 | 25 | BatteryState::BatteryState( 26 | std::shared_ptr & nh, 27 | const std::string & topic_name) 28 | : Sensors(nh) 29 | { 30 | pub_ = nh->create_publisher(topic_name, this->qos_); 31 | 32 | RCLCPP_INFO(nh_->get_logger(), "Succeeded to create battery state publisher"); 33 | } 34 | 35 | void BatteryState::publish( 36 | const rclcpp::Time & now, 37 | std::shared_ptr & dxl_sdk_wrapper) 38 | { 39 | auto msg = std::make_unique(); 40 | 41 | msg->header.stamp = now; 42 | 43 | msg->design_capacity = 1.8f; 44 | 45 | msg->voltage = 0.01f * dxl_sdk_wrapper->get_data_from_device( 46 | extern_control_table.battery_voltage.addr, 47 | extern_control_table.battery_voltage.length); 48 | 49 | msg->percentage = 0.01f * dxl_sdk_wrapper->get_data_from_device( 50 | extern_control_table.battery_percentage.addr, 51 | extern_control_table.battery_percentage.length); 52 | 53 | msg->voltage <= 7.0 ? msg->present = false : msg->present = true; 54 | 55 | pub_->publish(std::move(msg)); 56 | } 57 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_teleop/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | turtlebot3_teleop 5 | 2.1.1 6 | 7 | Teleoperation node using keyboard for TurtleBot3. 8 | 9 | Will Son 10 | Apache 2.0 11 | http://turtlebot3.robotis.com 12 | https://github.com/ROBOTIS-GIT/turtlebot3 13 | https://github.com/ROBOTIS-GIT/turtlebot3/issues 14 | Darby Lim 15 | Pyo 16 | geometry_msgs 17 | rclpy 18 | 19 | ament_python 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_teleop/resource/turtlebot3_teleop: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_teleop/resource/turtlebot3_teleop -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_teleop/setup.cfg: -------------------------------------------------------------------------------- 1 | [develop] 2 | script-dir=$base/lib/turtlebot3_teleop 3 | [install] 4 | install-scripts=$base/lib/turtlebot3_teleop 5 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_teleop/setup.py: -------------------------------------------------------------------------------- 1 | from setuptools import find_packages 2 | from setuptools import setup 3 | 4 | package_name = 'turtlebot3_teleop' 5 | 6 | setup( 7 | name=package_name, 8 | version='2.1.1', 9 | packages=find_packages(exclude=[]), 10 | data_files=[ 11 | ('share/ament_index/resource_index/packages', ['resource/' + package_name]), 12 | ('share/' + package_name, ['package.xml']), 13 | ], 14 | install_requires=[ 15 | 'setuptools', 16 | ], 17 | zip_safe=True, 18 | author='Darby Lim', 19 | author_email='thlim@robotis.com', 20 | maintainer='Will Son', 21 | maintainer_email='willson@robotis.com', 22 | keywords=['ROS'], 23 | classifiers=[ 24 | 'Intended Audience :: Developers', 25 | 'License :: OSI Approved :: Apache Software License', 26 | 'Programming Language :: Python', 27 | 'Topic :: Software Development', 28 | ], 29 | description=( 30 | 'Teleoperation node using keyboard for TurtleBot3.' 31 | ), 32 | license='Apache License, Version 2.0', 33 | tests_require=['pytest'], 34 | entry_points={ 35 | 'console_scripts': [ 36 | 'teleop_keyboard = turtlebot3_teleop.script.teleop_keyboard:main' 37 | ], 38 | }, 39 | ) 40 | -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_teleop/turtlebot3_teleop/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_teleop/turtlebot3_teleop/__init__.py -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_teleop/turtlebot3_teleop/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_teleop/turtlebot3_teleop/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_teleop/turtlebot3_teleop/script/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_teleop/turtlebot3_teleop/script/__init__.py -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_teleop/turtlebot3_teleop/script/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_teleop/turtlebot3_teleop/script/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /src/turtlebot3/turtlebot3_teleop/turtlebot3_teleop/script/__pycache__/teleop_keyboard.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_teleop/turtlebot3_teleop/script/__pycache__/teleop_keyboard.cpython-38.pyc -------------------------------------------------------------------------------- /src/turtlebot3_msgs/.travis.yml: -------------------------------------------------------------------------------- 1 | services: 2 | - docker 3 | 4 | language: 5 | - generic 6 | 7 | notifications: 8 | email: 9 | on_success: change 10 | on_failure: always 11 | recipients: 12 | - willson@robotis.com 13 | 14 | branches: 15 | only: 16 | - ros2 17 | - ros2-devel 18 | - dashing-devel 19 | - eloquent-devel 20 | - foxy-devel 21 | 22 | install: 23 | - git clone --quiet --depth 1 https://github.com/ROBOTIS-GIT/ros2ci.git .ros2ci 24 | 25 | matrix: 26 | include: 27 | - script: .ros2ci/travis.bash dashing 28 | - script: .ros2ci/travis.bash eloquent 29 | - script: .ros2ci/travis.bash nightly 30 | -------------------------------------------------------------------------------- /src/turtlebot3_msgs/CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2 | Changelog for package turtlebot3_msgs 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 | 5 | 2.2.1 (2020-06-18) 6 | ------------------ 7 | * ROS 2 Eloquent Elusor supported 8 | * ROS 2 Foxy Fitzroy supported 9 | * Contributors: Will Son 10 | 11 | 2.2.0 (2019-09-24) 12 | ------------------ 13 | * Added action file for turtlebot example package 14 | * Contributors: Ryan Shim 15 | 16 | 2.1.0 (2019-08-20) 17 | ------------------ 18 | * Supported ROS 2 Dashing Diademata 19 | * Added Sound service file 20 | * Contributors: Darby Lim, Pyo 21 | 22 | 2.0.0 (2018-07-26) 23 | ------------------ 24 | * Added support for ROS 2 25 | * Contributors: Vineet Ghatge 26 | 27 | 1.0.0 (2018-05-29) 28 | ------------------ 29 | * Added sensors 30 | * Deleted unused msg and srv 31 | * Separated turtlebot3_msgs and applications related messages 32 | * Merged pull request `#10 `_ `#9 `_ `#8 `_ `#7 `_ 33 | * Contributors: Darby Lim, Gilbert, Pyo 34 | 35 | 0.1.5 (2018-03-14) 36 | ------------------ 37 | * Modified CMakeLists.txt and package for package format v2 38 | * Contributors: Pyo 39 | 40 | 0.1.4 (2018-03-10) 41 | ------------------ 42 | * Added torque msg in sensor_msgs 43 | * Added Sound.msg 44 | * Deleted motorpower.msg in cmakelists 45 | * Contributors: Darby Lim, Pyo 46 | 47 | 0.1.3 (2017-04-24) 48 | ------------------ 49 | * Added msg package for TB3 50 | * Contributors: Pyo 51 | -------------------------------------------------------------------------------- /src/turtlebot3_msgs/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Set minimum required version of cmake, project name and compile options 3 | ################################################################################ 4 | cmake_minimum_required(VERSION 3.5) 5 | project(turtlebot3_msgs) 6 | 7 | if(NOT CMAKE_CXX_STANDARD) 8 | set(CMAKE_CXX_STANDARD 14) 9 | endif() 10 | 11 | if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") 12 | add_compile_options(-Wall -Wextra -Wpedantic) 13 | endif() 14 | 15 | ################################################################################ 16 | # Find ament packages and libraries for ament and system dependencies 17 | ################################################################################ 18 | find_package(action_msgs REQUIRED) 19 | find_package(ament_cmake REQUIRED) 20 | find_package(rosidl_default_generators REQUIRED) 21 | find_package(std_msgs REQUIRED) 22 | 23 | ################################################################################ 24 | # Setup for python modules and scripts 25 | ################################################################################ 26 | 27 | ################################################################################ 28 | # Declare ROS messages, services and actions 29 | ################################################################################ 30 | set(msg_files 31 | "msg/SensorState.msg" 32 | "msg/Sound.msg" 33 | "msg/VersionInfo.msg" 34 | ) 35 | 36 | set(srv_files 37 | "srv/Sound.srv" 38 | "srv/Dqn.srv" 39 | ) 40 | 41 | set(action_files 42 | "action/Patrol.action" 43 | ) 44 | 45 | rosidl_generate_interfaces(${PROJECT_NAME} 46 | ${msg_files} 47 | ${srv_files} 48 | ${action_files} 49 | DEPENDENCIES action_msgs std_msgs 50 | ADD_LINTER_TESTS 51 | ) 52 | ament_export_dependencies(rosidl_default_runtime) 53 | ament_package() 54 | -------------------------------------------------------------------------------- /src/turtlebot3_msgs/action/Patrol.action: -------------------------------------------------------------------------------- 1 | # Goal 2 | float32 radius 3 | --- 4 | # Result 5 | bool success 6 | --- 7 | # Feedback 8 | float32 left_time 9 | -------------------------------------------------------------------------------- /src/turtlebot3_msgs/msg/SensorState.msg: -------------------------------------------------------------------------------- 1 | ######################################## 2 | # CONSTANTS 3 | ######################################## 4 | # Bumper states (states are combined, when multiple bumpers are pressed) 5 | uint8 BUMPER_FORWARD = 1 6 | uint8 BUMPER_BACKWARD = 2 7 | 8 | # Cliff sensor states (states are combined, when multiple cliff sensors are triggered) 9 | uint8 CLIFF = 1 10 | 11 | # Sonar sensor states (states are combined, when multiple sonar sensors are triggered) 12 | uint8 SONAR = 1 13 | 14 | # Illumination sensor (states are combined, when multiple illumination sensors are triggered) 15 | uint8 ILLUMINATION = 1 16 | 17 | # Button states (states are combined, when multiple buttons are pressed) 18 | uint8 BUTTON0 = 1 19 | uint8 BUTTON1 = 2 20 | 21 | # Motor errors 22 | uint8 ERROR_LEFT_MOTOR = 1 23 | uint8 ERROR_RIGHT_MOTOR = 2 24 | 25 | # Motor torque 26 | uint8 TORQUE_ON = 1 27 | uint8 TORQUE_OFF = 2 28 | 29 | ######################################## 30 | # Messages 31 | ######################################## 32 | std_msgs/Header header 33 | uint8 bumper 34 | float32 cliff 35 | float32 sonar 36 | float32 illumination 37 | uint8 led 38 | uint8 button 39 | bool torque 40 | int32 left_encoder # (-2,147,483,648 ~ 2,147,483,647) 41 | int32 right_encoder # (-2,147,483,648 ~ 2,147,483,647) 42 | float32 battery 43 | -------------------------------------------------------------------------------- /src/turtlebot3_msgs/msg/Sound.msg: -------------------------------------------------------------------------------- 1 | ######################################## 2 | # CONSTANTS 3 | ######################################## 4 | uint8 OFF = 0 5 | uint8 ON = 1 6 | uint8 LOW_BATTERY = 2 7 | uint8 ERROR = 3 8 | uint8 BUTTON1 = 4 9 | uint8 BUTTON2 = 5 10 | 11 | ######################################## 12 | # Messages 13 | ######################################## 14 | uint8 value 15 | -------------------------------------------------------------------------------- /src/turtlebot3_msgs/msg/VersionInfo.msg: -------------------------------------------------------------------------------- 1 | ######################################## 2 | # Messages 3 | ######################################## 4 | string hardware # ..
: hardware version of Turtlebot3 (ex. 2017.05.23) 5 | string firmware # .. : firmware version of OpenCR 6 | string software # .. : software version of Turtlebot3 ROS packages 7 | -------------------------------------------------------------------------------- /src/turtlebot3_msgs/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | turtlebot3_msgs 5 | 2.2.1 6 | 7 | Message and service types: custom messages and services for TurtleBot3 packages for ROS2 8 | 9 | Apache 2.0 10 | Pyo 11 | Darby Lim 12 | Gilbert 13 | Vineet Ghatge 14 | Ryan Shim 15 | Will Son 16 | http://wiki.ros.org/turtlebot3_msgs 17 | http://turtlebot3.robotis.com 18 | https://github.com/ROBOTIS-GIT/turtlebot3_msgs 19 | https://github.com/ROBOTIS-GIT/turtlebot3_msgs/issues 20 | ament_cmake 21 | rosidl_default_generators 22 | action_msgs 23 | builtin_interfaces 24 | std_msgs 25 | rosidl_default_runtime 26 | ament_lint_common 27 | rosidl_interface_packages 28 | 29 | ament_cmake 30 | 31 | 32 | -------------------------------------------------------------------------------- /src/turtlebot3_msgs/srv/Dqn.srv: -------------------------------------------------------------------------------- 1 | uint8 action 2 | bool init 3 | --- 4 | float32[] state 5 | float32 reward 6 | bool done 7 | -------------------------------------------------------------------------------- /src/turtlebot3_msgs/srv/Sound.srv: -------------------------------------------------------------------------------- 1 | ######################################## 2 | # CONSTANTS 3 | ######################################## 4 | # uint8 OFF = 0 5 | # uint8 ON = 1 6 | # uint8 LOW_BATTERY = 2 7 | # uint8 ERROR = 3 8 | # uint8 BUTTON1 = 4 9 | # uint8 BUTTON2 = 5 10 | 11 | uint8 value 12 | --- 13 | bool success 14 | string message 15 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/.travis.yml: -------------------------------------------------------------------------------- 1 | services: 2 | - docker 3 | 4 | language: 5 | - generic 6 | 7 | notifications: 8 | email: 9 | on_success: change 10 | on_failure: always 11 | recipients: 12 | - willson@robotis.com 13 | 14 | branches: 15 | only: 16 | - ros2 17 | - ros2-devel 18 | - foxy-devel 19 | 20 | install: 21 | - git clone --quiet --depth 1 https://github.com/ROBOTIS-GIT/ros2ci.git .ros2ci 22 | 23 | matrix: 24 | include: 25 | - script: .ros2ci/travis.bash foxy 26 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | Any contribution that you make to this repository will 2 | be under the Apache 2 License, as dictated by that 3 | [license](http://www.apache.org/licenses/LICENSE-2.0.html): 4 | 5 | ~~~ 6 | 5. Submission of Contributions. Unless You explicitly state otherwise, 7 | any Contribution intentionally submitted for inclusion in the Work 8 | by You to the Licensor shall be under the terms and conditions of 9 | this License, without any additional terms or conditions. 10 | Notwithstanding the above, nothing herein shall supersede or modify 11 | the terms of any separate license agreement you may have executed 12 | with Licensor regarding such Contributions. 13 | ~~~ 14 | 15 | Contributors must sign-off each commit by adding a `Signed-off-by: ...` 16 | line to commit messages to certify that they have the right to submit 17 | the code they are contributing to the project according to the 18 | [Developer Certificate of Origin (DCO)](https://developercertificate.org/). 19 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_fake_node/launch/rviz2.launch.py: -------------------------------------------------------------------------------- 1 | # Copyright 2019 Open Source Robotics Foundation, Inc. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | # Author: Ryan Shim 16 | 17 | import os 18 | 19 | from ament_index_python.packages import get_package_share_directory 20 | from launch import LaunchDescription 21 | from launch_ros.actions import Node 22 | 23 | 24 | def generate_launch_description(): 25 | rviz_config_dir = os.path.join( 26 | get_package_share_directory('turtlebot3_fake_node'), 27 | 'rviz', 28 | 'model.rviz' 29 | ) 30 | 31 | return LaunchDescription([ 32 | Node( 33 | package='rviz2', 34 | executable='rviz2', 35 | name='rviz2', 36 | arguments=['-d', rviz_config_dir], 37 | output='screen'), 38 | ]) 39 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_fake_node/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | turtlebot3_fake_node 5 | 2.2.1 6 | 7 | Package for TurtleBot3 fake node. With this package, simple tests can be done without a robot. 8 | You can do simple tests using this package on rviz without real robots. 9 | 10 | Will Son 11 | Apache 2.0 12 | http://turtlebot3.robotis.com 13 | https://github.com/ROBOTIS-GIT/turtlebot3_simulations 14 | https://github.com/ROBOTIS-GIT/turtlebot3_simulations/issues 15 | Pyo 16 | Darby Lim 17 | Ryan Shim 18 | ament_cmake 19 | geometry_msgs 20 | nav_msgs 21 | rclcpp 22 | sensor_msgs 23 | tf2 24 | tf2_msgs 25 | turtlebot3_msgs 26 | robot_state_publisher 27 | 28 | ament_cmake 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_fake_node/param/burger.yaml: -------------------------------------------------------------------------------- 1 | turtlebot3_fake_node: 2 | ros__parameters: 3 | wheels: 4 | separation: 0.160 5 | radius: 0.033 6 | 7 | joint_states_frame: "base_footprint" 8 | odom_frame: "odom" 9 | base_frame: "base_footprint" 10 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_fake_node/param/waffle.yaml: -------------------------------------------------------------------------------- 1 | turtlebot3_fake_node: 2 | ros__parameters: 3 | wheels: 4 | separation: 0.287 5 | radius: 0.033 6 | 7 | joint_states_frame: "base_footprint" 8 | odom_frame: "odom" 9 | base_frame: "base_footprint" 10 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_fake_node/param/waffle_pi.yaml: -------------------------------------------------------------------------------- 1 | turtlebot3_fake_node: 2 | ros__parameters: 3 | wheels: 4 | separation: 0.287 5 | radius: 0.033 6 | 7 | joint_states_frame: "base_footprint" 8 | odom_frame: "odom" 9 | base_frame: "base_footprint" 10 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/launch/robot_state_publisher.launch.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # 3 | # Copyright 2019 ROBOTIS CO., LTD. 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | # Authors: Darby Lim 18 | 19 | import os 20 | 21 | from ament_index_python.packages import get_package_share_directory 22 | from launch import LaunchDescription 23 | from launch.actions import DeclareLaunchArgument 24 | from launch.substitutions import LaunchConfiguration 25 | from launch_ros.actions import Node 26 | 27 | 28 | def generate_launch_description(): 29 | TURTLEBOT3_MODEL = os.environ['TURTLEBOT3_MODEL'] 30 | 31 | use_sim_time = LaunchConfiguration('use_sim_time', default='false') 32 | urdf_file_name = 'turtlebot3_' + TURTLEBOT3_MODEL + '.urdf' 33 | 34 | print('urdf_file_name : {}'.format(urdf_file_name)) 35 | 36 | urdf = os.path.join( 37 | get_package_share_directory('turtlebot3_description'), 38 | 'urdf', 39 | urdf_file_name) 40 | 41 | return LaunchDescription([ 42 | DeclareLaunchArgument( 43 | 'use_sim_time', 44 | default_value='false', 45 | description='Use simulation (Gazebo) clock if true'), 46 | 47 | Node( 48 | package='robot_state_publisher', 49 | executable='robot_state_publisher', 50 | name='robot_state_publisher', 51 | output='screen', 52 | parameters=[{'use_sim_time': use_sim_time}], 53 | arguments=[urdf]), 54 | ]) 55 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/course/materials/scripts/course.material: -------------------------------------------------------------------------------- 1 | material course 2 | { 3 | technique 4 | { 5 | pass 6 | { 7 | texture_unit 8 | { 9 | texture course.png 10 | } 11 | } 12 | } 13 | } 14 | 15 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/course/materials/textures/course.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/course/materials/textures/course.png -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/course/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | course 5 | 1.0 6 | model.sdf 7 | 8 | Gilbert 9 | kkjong@robotis.com 10 | 11 | 12 | 13 | A simple textured ground plane 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/course/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | true 5 | 6 | 7 | 8 | 9 | 0 0 1 10 | 4 4 11 | 12 | 13 | 14 | 15 | 16 | 100 17 | 50 18 | 19 | 20 | 21 | 22 | 23 | false 24 | 25 | 26 | 0 0 1 27 | 4 4 28 | 29 | 30 | 31 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/ground/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ground 5 | 1.0 6 | model.sdf 7 | 8 | 9 | Hyunok Lee 10 | hyunokhyunok@naver.com 11 | 12 | 13 | 14 | Ground. 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/ground/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 0 0 -0.1 0 0 0 5 | 1 6 | 7 | 8 | 9 | 10 | 8 8 0.01 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 10 26 | 27 | 28 | 29 | 30 | 10 10 0.01 31 | 32 | 33 | 34 | 38 | 39 | 40 | 0 41 | 0 42 | 1 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/lights/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | lights 5 | 1.0 6 | model.sdf 7 | 8 | 9 | Hyunok Lee 10 | hyunokhyunok@naver.com 11 | 12 | 13 | 14 | Ground. 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/lights/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -0.948146 0.604519 1 0 -0 0 5 | 0.5 0.5 0.5 1 6 | 0.1 0.1 0.1 1 7 | 8 | 20 9 | 0.5 10 | 0.01 11 | 0.001 12 | 13 | 0 14 | 0 0 -1 15 | 16 | 17 | 1.63854 1.69565 1 0 -0 0 18 | 0.5 0.5 0.5 1 19 | 0.1 0.1 0.1 1 20 | 21 | 20 22 | 0.5 23 | 0.01 24 | 0.001 25 | 26 | 0 27 | 0 0 -1 28 | 29 | 30 | 0.42 -3.31 1 0 -0 0 31 | 0.5 0.5 0.5 1 32 | 0.1 0.1 0.1 1 33 | 34 | 20 35 | 0.5 36 | 0.01 37 | 0.001 38 | 39 | 0 40 | 0 0 -1 41 | 42 | 43 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | turtlebot3_autorace 5 | 1.0 6 | 7 | 8 | Ryan Shim 9 | jhshim@robotis.com 10 | 11 | 12 | 13 | Turtlebot3 Autorace 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_bar_down/materials/scripts/traffic_bar.material: -------------------------------------------------------------------------------- 1 | material traffic_bar 2 | { 3 | technique 4 | { 5 | pass 6 | { 7 | texture_unit 8 | { 9 | texture traffic_bar.png 10 | } 11 | } 12 | } 13 | } 14 | 15 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_bar_down/materials/textures/traffic_bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_bar_down/materials/textures/traffic_bar.png -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_bar_down/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | traffic_bar_down 5 | 1.0 6 | traffic_bar_down.sdf 7 | 8 | 9 | Hyunok Lee 10 | hyunokhyunok@naver.com 11 | 12 | 13 | 14 | Model with links of simple shapes and texture applied. 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_bar_down/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | true 5 | 6 | -1.8 0.6 0.15 0 0 0 7 | 8 | 9 | 10 | 0.3 0.01 0.023 11 | 12 | 13 | 14 | 15 | 16 | 17 | 0.3 0.01 0.023 18 | 19 | 20 | 21 | 26 | 27 | 28 | 29 | 1 30 | 31 | 32 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_bar_up/materials/scripts/traffic_bar.material: -------------------------------------------------------------------------------- 1 | material traffic_bar 2 | { 3 | technique 4 | { 5 | pass 6 | { 7 | texture_unit 8 | { 9 | texture traffic_bar.png 10 | } 11 | } 12 | } 13 | } 14 | 15 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_bar_up/materials/textures/traffic_bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_bar_up/materials/textures/traffic_bar.png -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_bar_up/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | traffic_bar_up 5 | 1.0 6 | model.sdf 7 | 8 | 9 | Hyunok Lee 10 | hyunokhyunok@naver.com 11 | 12 | 13 | 14 | Model with links of simple shapes and texture applied. 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_bar_up/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 0 0 0 0 0 0 5 | 6 | 7 | -1.95 0.6 0.3 0 1.57 0 8 | 9 | 10 | 0.3 0.01 0.023 11 | 12 | 13 | 14 | 15 | -1.95 0.6 0.3 0 1.57 0 16 | 17 | 18 | 0.3 0.01 0.023 19 | 20 | 21 | 22 | 27 | 28 | 29 | 30 | 1 31 | 32 | 33 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_light_green/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | traffic_light_green 4 | 1.0 5 | model.sdf 6 | 7 | Gilbert 8 | kkjong@robotis.com 9 | 10 | The traffic green light. 11 | 12 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_light_green/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 0 0 0 0 -0 -1.5708 5 | 6 | 7 | 1.3 -1.95 0.05 0 0 0 8 | 9 | 10 | 0.015 11 | 12 | 13 | 14 | 15 | 1.3 -1.95 0.05 0 0 0 16 | 17 | 18 | 0.015 19 | 20 | 21 | 22 | 26 | 27 | 28 | 0 29 | 0 30 | 31 | 1 32 | 33 | 34 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_light_red/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | traffic_light_red 4 | 1.0 5 | model.sdf 6 | 7 | Gilbert 8 | kkjong@robotis.com 9 | 10 | The traffic red light. 11 | 12 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_light_red/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 0 0 0 0 -0 -1.5708 5 | 6 | 7 | 1.3 -1.95 0.13 0 0 0 8 | 9 | 10 | 0.015 11 | 12 | 13 | 14 | 15 | 1.3 -1.95 0.13 0 0 0 16 | 17 | 18 | 0.015 19 | 20 | 21 | 22 | 26 | 27 | 28 | 0 29 | 0 30 | 31 | 1 32 | 33 | 34 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_light_yellow/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | traffic_light_yellow 4 | 1.0 5 | model.sdf 6 | 7 | Gilbert 8 | kkjong@robotis.com 9 | 10 | The traffic yellow light. 11 | 12 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_light_yellow/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 0 0 0 0 -0 -1.5708 5 | 6 | 7 | 1.3 -1.95 0.09 0 0 0 8 | 9 | 10 | 0.015 11 | 12 | 13 | 14 | 15 | 1.3 -1.95 0.09 0 0 0 16 | 17 | 18 | 0.015 19 | 20 | 21 | 22 | 26 | 27 | 28 | 0 29 | 0 30 | 31 | 1 32 | 33 | 34 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_parking/materials/scripts/traffic_parking.material: -------------------------------------------------------------------------------- 1 | material traffic_parking 2 | { 3 | technique 4 | { 5 | pass 6 | { 7 | texture_unit 8 | { 9 | texture traffic_parking.png 10 | } 11 | } 12 | } 13 | } 14 | 15 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_parking/materials/textures/traffic_parking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_parking/materials/textures/traffic_parking.png -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_parking/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | traffic_parking 5 | 1.0 6 | model.sdf 7 | 8 | 9 | Hyunok Lee 10 | hyunokhyunok@naver.com 11 | 12 | 13 | 14 | Model with links of simple shapes and texture applied. 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_parking/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | true 5 | 6 | 0 0 0 0 0 0 7 | 8 | 9 | 10 | 0.12 0.025 0.25 11 | 12 | 13 | 14 | 15 | 16 | 17 | 0.12 0.025 0.25 18 | 19 | 20 | 21 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_stop/materials/scripts/traffic_stop.material: -------------------------------------------------------------------------------- 1 | material traffic_stop 2 | { 3 | technique 4 | { 5 | pass 6 | { 7 | texture_unit 8 | { 9 | texture traffic_stop.png 10 | } 11 | } 12 | } 13 | } 14 | 15 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_stop/materials/textures/traffic_stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_stop/materials/textures/traffic_stop.png -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_stop/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | traffic_stop 5 | 1.0 6 | model.sdf 7 | 8 | 9 | Gilbert 10 | kkjong@robotis.com 11 | 12 | 13 | 14 | Model with links of simple shapes and texture applied. 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_stop/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | true 5 | 6 | 0 0 0 0 0 0 7 | 8 | 9 | 10 | 0.12 0.025 0.25 11 | 12 | 13 | 14 | 15 | 16 | 17 | 0.12 0.025 0.25 18 | 19 | 20 | 21 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_tunnel/materials/scripts/tunnel.material: -------------------------------------------------------------------------------- 1 | material traffic_tunnel 2 | { 3 | technique 4 | { 5 | pass 6 | { 7 | texture_unit 8 | { 9 | texture tunnel.png 10 | } 11 | } 12 | } 13 | } 14 | 15 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_tunnel/materials/textures/tunnel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_tunnel/materials/textures/tunnel.png -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_tunnel/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | traffic_tunnel 5 | 1.0 6 | model.sdf 7 | 8 | 9 | Hyunok Lee 10 | hyunokhyunok@naver.com 11 | 12 | 13 | 14 | Model with links of simple shapes and texture applied. 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_tunnel/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 0 0 0.125 0 0 0 5 | 6 | 0 0 0 0 0 0 7 | 8 | 9 | 10 | 0.12 0.025 0.25 11 | 12 | 13 | 14 | 15 | 16 | 17 | 0.12 0.025 0.25 18 | 19 | 20 | 21 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/tunnel_obstacles/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | tunnel_obstacles 5 | 1.0 6 | model.sdf 7 | 8 | 9 | Hyunok Lee 10 | hyunokhyunok@naver.com 11 | 12 | 13 | 14 | Tunnel obstacles. 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/tunnel_wall/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | tunnel_wall 5 | 1.0 6 | model.sdf 7 | 8 | 9 | Hyunok Lee 10 | hyunokhyunok@naver.com 11 | 12 | 13 | 14 | Tunnel wall. 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_burger/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | TurtleBot3(Burger) 5 | 2.0 6 | model-1_4.sdf 7 | model.sdf 8 | 9 | 10 | Taehun Lim(Darby) 11 | thlim@robotis.com 12 | 13 | 14 | 15 | TurtleBot3 Burger 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/goal_box/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | goal_box 4 | 1.0 5 | model.sdf 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/goal_box/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 0 0 0 0 -0 -1.5708 5 | 6 | 7 | 0 0 0.0005 0 -0 0 8 | 9 | 10 | 0.3 11 | 0.001 12 | 13 | 14 | 15 | 19 | 1 0 0 1 20 | 21 | 22 | 0 0 0 0 -0 0 23 | 24 | 1 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/inner_walls/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | inner_walls 4 | 1.0 5 | model.sdf 6 | 7 | 8 | Ryan Shim 9 | jhshim@robotis.com 10 | 11 | 12 | 13 | TurtleBot3 DQN World Inner Walls 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | turtlebot3_dqn 4 | 1.0 5 | model.sdf 6 | 7 | 8 | Ryan Shim 9 | jhshim@robotis.com 10 | 11 | 12 | 13 | TurtleBot3 DQN World 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacle1/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | obstacle1 4 | 1.0 5 | model.sdf 6 | 7 | 8 | Ryan Shim 9 | jhshim@robotis.com 10 | 11 | 12 | 13 | TurtleBot3 DQN World 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacle1/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 0.12 9 | 0.25 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 0.12 18 | 0.25 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacle2/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | obstacle2 4 | 1.0 5 | model.sdf 6 | 7 | 8 | Ryan Shim 9 | jhshim@robotis.com 10 | 11 | 12 | 13 | TurtleBot3 DQN World 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacle2/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 0.12 9 | 0.25 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 0.12 18 | 0.25 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacle_plugin/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # CMake 3 | ################################################################################ 4 | cmake_minimum_required(VERSION 2.8 FATAL_ERROR) 5 | 6 | ################################################################################ 7 | # Packages 8 | ################################################################################ 9 | find_package(gazebo REQUIRED) 10 | 11 | ################################################################################ 12 | # Build 13 | ################################################################################ 14 | link_directories(${GAZEBO_LIBRARY_DIRS}) 15 | 16 | include_directories(${GAZEBO_INCLUDE_DIRS}) 17 | 18 | list(APPEND CMAKE_CXX_FLAGS "${GAZEBO_CXX_FLAGS}") 19 | 20 | add_library(obstacle1 SHARED obstacle1.cc) 21 | target_link_libraries(obstacle1 ${GAZEBO_LIBRARIES}) 22 | 23 | add_library(obstacle2 SHARED obstacle2.cc) 24 | target_link_libraries(obstacle2 ${GAZEBO_LIBRARIES}) 25 | 26 | add_library(obstacles SHARED obstacles.cc) 27 | target_link_libraries(obstacles ${GAZEBO_LIBRARIES}) 28 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacle_plugin/build/libobstacle1.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacle_plugin/build/libobstacle1.so -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacle_plugin/build/libobstacle2.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacle_plugin/build/libobstacle2.so -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacle_plugin/build/libobstacles.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacle_plugin/build/libobstacles.so -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacles/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | obstacles 4 | 1.0 5 | model.sdf 6 | 7 | 8 | Ryan Shim 9 | jhshim@robotis.com 10 | 11 | 12 | 13 | TurtleBot3 DQN World 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_house/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Turtlebot3 House 5 | 1.0 6 | model.sdf 7 | 8 | 9 | Taehun Lim(Darby) 10 | thlim@robotis.com 11 | 12 | 13 | 14 | Turtlebot3 House 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_waffle/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | TurtleBot3(Waffle) 5 | 2.0 6 | model.sdf 7 | 8 | 9 | Taehun Lim(Darby) 10 | thlim@robotis.com 11 | 12 | 13 | 14 | TurtleBot3 Waffle 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_waffle_pi/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | TurtleBot3(Waffle Pi) 5 | 2.0 6 | model-1_4.sdf 7 | model.sdf 8 | 9 | 10 | Taehun Lim(Darby) 11 | thlim@robotis.com 12 | 13 | 14 | 15 | TurtleBot3 Waffle Pi 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_world/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | TurtleBot3 World 5 | 1.0 6 | model-1_4.sdf 7 | model.sdf 8 | 9 | 10 | Taehun Lim(Darby) 11 | thlim@robotis.com 12 | 13 | 14 | 15 | World of TurtleBot3 with ROS symbol 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | turtlebot3_gazebo 5 | 2.2.1 6 | 7 | Gazebo simulation package for the TurtleBot3 8 | 9 | Will Son 10 | Apache 2.0 11 | http://turtlebot3.robotis.com 12 | https://github.com/ROBOTIS-GIT/turtlebot3_simulations 13 | https://github.com/ROBOTIS-GIT/turtlebot3_simulations/issues 14 | Darby Lim 15 | Pyo 16 | Ryan Shim 17 | ament_cmake 18 | gazebo_ros_pkgs 19 | geometry_msgs 20 | nav_msgs 21 | rclcpp 22 | sensor_msgs 23 | tf2 24 | turtlebot3 25 | 26 | ament_cmake 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/worlds/empty_worlds/burger.model: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | model://ground_plane 7 | 8 | 9 | 10 | model://sun 11 | 12 | 13 | 14 | false 15 | 16 | 17 | 18 | 19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599 20 | orbit 21 | perspective 22 | 23 | 24 | 25 | 26 | 1000.0 27 | 0.001 28 | 1 29 | 30 | 31 | quick 32 | 150 33 | 0 34 | 1.400000 35 | 1 36 | 37 | 38 | 0.00001 39 | 0.2 40 | 2000.000000 41 | 0.01000 42 | 43 | 44 | 45 | 46 | 47 | model://turtlebot3_burger 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/worlds/empty_worlds/waffle_pi.model: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | model://ground_plane 7 | 8 | 9 | 10 | model://sun 11 | 12 | 13 | 14 | false 15 | 16 | 17 | 18 | 19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599 20 | orbit 21 | perspective 22 | 23 | 24 | 25 | 26 | 1000.0 27 | 0.001 28 | 1 29 | 30 | 31 | quick 32 | 150 33 | 0 34 | 1.400000 35 | 1 36 | 37 | 38 | 0.00001 39 | 0.2 40 | 2000.000000 41 | 0.01000 42 | 43 | 44 | 45 | 46 | 47 | model://turtlebot3_waffle_pi 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_autoraces/waffle.model: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | model://ground_plane 7 | 8 | 9 | 10 | model://sun 11 | 12 | 13 | 14 | false 15 | 16 | 17 | 18 | 19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599 20 | orbit 21 | perspective 22 | 23 | 24 | 25 | 26 | 1000.0 27 | 0.001 28 | 1 29 | 30 | 31 | quick 32 | 150 33 | 0 34 | 1.400000 35 | 1 36 | 37 | 38 | 0.00001 39 | 0.2 40 | 2000.000000 41 | 0.01000 42 | 43 | 44 | 45 | 46 | 47 | 1 48 | 49 | model://turtlebot3_autorace 50 | 51 | 52 | 53 | 54 | -2.0 -0.5 0.01 0.0 0.0 0.0 55 | model://turtlebot3_waffle 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_autoraces/waffle_pi.model: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | model://ground_plane 7 | 8 | 9 | 10 | model://sun 11 | 12 | 13 | 14 | false 15 | 16 | 17 | 18 | 19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599 20 | orbit 21 | perspective 22 | 23 | 24 | 25 | 26 | 1000.0 27 | 0.001 28 | 1 29 | 30 | 31 | quick 32 | 150 33 | 0 34 | 1.400000 35 | 1 36 | 37 | 38 | 0.00001 39 | 0.2 40 | 2000.000000 41 | 0.01000 42 | 43 | 44 | 45 | 46 | 47 | 1 48 | 49 | model://turtlebot3_autorace 50 | 51 | 52 | 53 | 54 | -2.0 -0.5 0.01 0.0 0.0 0.0 55 | model://turtlebot3_waffle_pi 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_dqn_stage1/burger.model: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | model://ground_plane 7 | 8 | 9 | 10 | model://sun 11 | 12 | 13 | 14 | false 15 | 16 | 17 | 18 | 19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599 20 | orbit 21 | perspective 22 | 23 | 24 | 25 | 26 | 1000.0 27 | 0.001 28 | 1 29 | 30 | 31 | quick 32 | 150 33 | 0 34 | 1.400000 35 | 1 36 | 37 | 38 | 0.00001 39 | 0.2 40 | 2000.000000 41 | 0.01000 42 | 43 | 44 | 45 | 46 | 47 | 1 48 | 49 | model://turtlebot3_dqn_world 50 | 51 | 52 | 53 | 54 | 0.0 0.0 0.0 0.0 0.0 0.0 55 | model://turtlebot3_burger 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_dqn_stage1/waffle.model: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | model://ground_plane 7 | 8 | 9 | 10 | model://sun 11 | 12 | 13 | 14 | false 15 | 16 | 17 | 18 | 19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599 20 | orbit 21 | perspective 22 | 23 | 24 | 25 | 26 | 1000.0 27 | 0.001 28 | 1 29 | 30 | 31 | quick 32 | 150 33 | 0 34 | 1.400000 35 | 1 36 | 37 | 38 | 0.00001 39 | 0.2 40 | 2000.000000 41 | 0.01000 42 | 43 | 44 | 45 | 46 | 47 | 1 48 | 49 | model://turtlebot3_dqn_world 50 | 51 | 52 | 53 | 54 | 0.0 0.0 0.0 0.0 0.0 0.0 55 | model://turtlebot3_waffle 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_dqn_stage1/waffle_pi.model: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | model://ground_plane 7 | 8 | 9 | 10 | model://sun 11 | 12 | 13 | 14 | false 15 | 16 | 17 | 18 | 19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599 20 | orbit 21 | perspective 22 | 23 | 24 | 25 | 26 | 1000.0 27 | 0.001 28 | 1 29 | 30 | 31 | quick 32 | 150 33 | 0 34 | 1.400000 35 | 1 36 | 37 | 38 | 0.00001 39 | 0.2 40 | 2000.000000 41 | 0.01000 42 | 43 | 44 | 45 | 46 | 47 | 1 48 | 49 | model://turtlebot3_dqn_world 50 | 51 | 52 | 53 | 54 | 0.0 0.0 0.0 0.0 0.0 0.0 55 | model://turtlebot3_waffle_pi 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_dqn_stage2/burger.model: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | model://ground_plane 7 | 8 | 9 | 10 | model://sun 11 | 12 | 13 | 14 | false 15 | 16 | 17 | 18 | 19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599 20 | orbit 21 | perspective 22 | 23 | 24 | 25 | 26 | 1000.0 27 | 0.001 28 | 1 29 | 30 | 31 | quick 32 | 150 33 | 0 34 | 1.400000 35 | 1 36 | 37 | 38 | 0.00001 39 | 0.2 40 | 2000.000000 41 | 0.01000 42 | 43 | 44 | 45 | 46 | 47 | 1 48 | 49 | model://turtlebot3_dqn_world 50 | 51 | 52 | 53 | 54 | model://turtlebot3_dqn_world/obstacles 55 | 56 | 57 | 58 | 0.0 0.0 0.0 0.0 0.0 0.0 59 | model://turtlebot3_burger 60 | 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_dqn_stage2/waffle.model: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | model://ground_plane 7 | 8 | 9 | 10 | model://sun 11 | 12 | 13 | 14 | false 15 | 16 | 17 | 18 | 19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599 20 | orbit 21 | perspective 22 | 23 | 24 | 25 | 26 | 1000.0 27 | 0.001 28 | 1 29 | 30 | 31 | quick 32 | 150 33 | 0 34 | 1.400000 35 | 1 36 | 37 | 38 | 0.00001 39 | 0.2 40 | 2000.000000 41 | 0.01000 42 | 43 | 44 | 45 | 46 | 47 | 1 48 | 49 | model://turtlebot3_dqn_world 50 | 51 | 52 | 53 | 54 | model://turtlebot3_dqn_world/obstacles 55 | 56 | 57 | 58 | 0.0 0.0 0.0 0.0 0.0 0.0 59 | model://turtlebot3_waffle 60 | 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_dqn_stage2/waffle_pi.model: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | model://ground_plane 7 | 8 | 9 | 10 | model://sun 11 | 12 | 13 | 14 | false 15 | 16 | 17 | 18 | 19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599 20 | orbit 21 | perspective 22 | 23 | 24 | 25 | 26 | 1000.0 27 | 0.001 28 | 1 29 | 30 | 31 | quick 32 | 150 33 | 0 34 | 1.400000 35 | 1 36 | 37 | 38 | 0.00001 39 | 0.2 40 | 2000.000000 41 | 0.01000 42 | 43 | 44 | 45 | 46 | 47 | 1 48 | 49 | model://turtlebot3_dqn_world 50 | 51 | 52 | 53 | 54 | model://turtlebot3_dqn_world/obstacles 55 | 56 | 57 | 58 | 0.0 0.0 0.0 0.0 0.0 0.0 59 | model://turtlebot3_waffle_pi 60 | 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_houses/burger.model: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | model://ground_plane 7 | 8 | 9 | 10 | model://sun 11 | 12 | 13 | 14 | false 15 | 16 | 17 | 18 | 19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599 20 | orbit 21 | perspective 22 | 23 | 24 | 25 | 26 | 1000.0 27 | 0.001 28 | 1 29 | 30 | 31 | quick 32 | 150 33 | 0 34 | 1.400000 35 | 1 36 | 37 | 38 | 0.00001 39 | 0.2 40 | 2000.000000 41 | 0.01000 42 | 43 | 44 | 45 | 46 | 47 | 1 48 | 49 | model://turtlebot3_house 50 | 51 | 52 | 53 | 54 | -2.0 -0.5 0.01 0.0 0.0 0.0 55 | model://turtlebot3_burger 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_houses/waffle.model: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | model://ground_plane 7 | 8 | 9 | 10 | model://sun 11 | 12 | 13 | 14 | false 15 | 16 | 17 | 18 | 19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599 20 | orbit 21 | perspective 22 | 23 | 24 | 25 | 26 | 1000.0 27 | 0.001 28 | 1 29 | 30 | 31 | quick 32 | 150 33 | 0 34 | 1.400000 35 | 1 36 | 37 | 38 | 0.00001 39 | 0.2 40 | 2000.000000 41 | 0.01000 42 | 43 | 44 | 45 | 46 | 47 | 1 48 | 49 | model://turtlebot3_house 50 | 51 | 52 | 53 | 54 | -2.0 -0.5 0.01 0.0 0.0 0.0 55 | model://turtlebot3_waffle 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_houses/waffle_pi.model: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | model://ground_plane 7 | 8 | 9 | 10 | model://sun 11 | 12 | 13 | 14 | false 15 | 16 | 17 | 18 | 19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599 20 | orbit 21 | perspective 22 | 23 | 24 | 25 | 26 | 1000.0 27 | 0.001 28 | 1 29 | 30 | 31 | quick 32 | 150 33 | 0 34 | 1.400000 35 | 1 36 | 37 | 38 | 0.00001 39 | 0.2 40 | 2000.000000 41 | 0.01000 42 | 43 | 44 | 45 | 46 | 47 | 1 48 | 49 | model://turtlebot3_house 50 | 51 | 52 | 53 | 54 | -2.0 -0.5 0.01 0.0 0.0 0.0 55 | model://turtlebot3_waffle_pi 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_worlds/burger.model: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | model://ground_plane 7 | 8 | 9 | 10 | model://sun 11 | 12 | 13 | 14 | false 15 | 16 | 17 | 18 | 19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599 20 | orbit 21 | perspective 22 | 23 | 24 | 25 | 26 | 1000.0 27 | 0.001 28 | 1 29 | 30 | 31 | quick 32 | 150 33 | 0 34 | 1.400000 35 | 1 36 | 37 | 38 | 0.00001 39 | 0.2 40 | 2000.000000 41 | 0.01000 42 | 43 | 44 | 45 | 46 | 47 | 1 48 | 49 | model://turtlebot3_world 50 | 51 | 52 | 53 | 54 | -2.0 -0.5 0.01 0.0 0.0 0.0 55 | model://turtlebot3_burger 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_worlds/waffle_pi.model: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | model://ground_plane 7 | 8 | 9 | 10 | model://sun 11 | 12 | 13 | 14 | false 15 | 16 | 17 | 18 | 19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599 20 | orbit 21 | perspective 22 | 23 | 24 | 25 | 26 | 1000.0 27 | 0.001 28 | 1 29 | 30 | 31 | quick 32 | 150 33 | 0 34 | 1.400000 35 | 1 36 | 37 | 38 | 0.00001 39 | 0.2 40 | 2000.000000 41 | 0.01000 42 | 43 | 44 | 45 | 46 | 47 | 1 48 | 49 | model://turtlebot3_world 50 | 51 | 52 | 53 | 54 | -2.0 -0.5 0.01 0.0 0.0 0.0 55 | model://turtlebot3_waffle_pi 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_simulations/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.5) 2 | project(turtlebot3_simulations) 3 | find_package(ament_cmake REQUIRED) 4 | ament_package() 5 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_simulations/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | turtlebot3_simulations 5 | 2.2.1 6 | 7 | ROS 2 packages for TurtleBot3 simulations 8 | 9 | Will Son 10 | Apache 2.0 11 | http://turtlebot3.robotis.com 12 | https://github.com/ROBOTIS-GIT/turtlebot3_simulations 13 | https://github.com/ROBOTIS-GIT/turtlebot3_simulations/issues 14 | Darby Lim 15 | Pyo 16 | Ryan Shim 17 | ament_cmake 18 | turtlebot3_fake_node 19 | turtlebot3_gazebo 20 | 21 | ament_cmake 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/turtlebot3_simulations/turtlebot3_simulations_ci.repos: -------------------------------------------------------------------------------- 1 | repositories: 2 | turtlebot3/turtlebot3: 3 | type: git 4 | url: https://github.com/ROBOTIS-GIT/turtlebot3.git 5 | version: foxy-devel 6 | turtlebot3/turtlebot3_msgs: 7 | type: git 8 | url: https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git 9 | version: foxy-devel 10 | utils/DynamixelSDK: 11 | type: git 12 | url: https://github.com/ROBOTIS-GIT/DynamixelSDK.git 13 | version: foxy-devel 14 | utils/hls_lfcd_lds_driver: 15 | type: git 16 | url: https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver.git 17 | version: foxy-devel 18 | --------------------------------------------------------------------------------