├── .vscode └── settings.json ├── CMakeLists.txt ├── README.md ├── images ├── 360vs6_samples.gif ├── GitGraph.png ├── amcl_rosgraph.png ├── gazebo.png ├── gazebo_rosgraph.png ├── gmapping.png ├── gmapping_rosgraph.png ├── initialPose.gif ├── localization.gif ├── navigation.gif ├── navigation_all_topics.png ├── navigation_nodes_only.png ├── particle_filter.png └── particlefilter_rosgraph.png ├── launch ├── amcl.launch ├── gazebo.launch ├── gmapping.launch ├── move_base.launch ├── navigation.launch ├── particle_Filter.launch └── robot_localization.launch ├── maps ├── intialmap.pgm ├── map.pgm └── map.yaml ├── meshes ├── .vscode │ └── settings.json ├── burger_base.stl ├── lds.stl ├── left_tire.stl └── right_tire.stl ├── models └── turtlebot3_plaza │ ├── goal_box │ ├── model.config │ └── model.sdf │ ├── model.config │ └── model.sdf ├── package.xml ├── param ├── base_local_planner_params.yaml ├── costmap_common_params_burger.yaml ├── dwa_local_planner_params_burger.yaml ├── global_costmap_params.yaml ├── local_costmap_params.yaml └── move_base_params.yaml ├── rviz ├── gmapping.rviz ├── localization.rviz ├── navigation.rviz └── particle_filter.rviz ├── src ├── dataViz.py ├── initialPose.py ├── localizer.py └── traverse.py ├── urdf ├── common_properties.xacro ├── turtlebot3_burger.gazebo.xacro └── turtlebot3_burger.urdf.xacro └── world └── obstacles.world /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "python.autoComplete.extraPaths": [ 3 | "/home/aditya/catkin_ws/devel/lib/python3/dist-packages", 4 | "/opt/ros/noetic/lib/python3/dist-packages" 5 | ], 6 | "python.analysis.extraPaths": [ 7 | "/home/aditya/catkin_ws/devel/lib/python3/dist-packages", 8 | "/opt/ros/noetic/lib/python3/dist-packages" 9 | ], 10 | "cSpell.words": [ 11 | "gmapping", 12 | "publsihement", 13 | "Riviz", 14 | "roscore", 15 | "roslaunch", 16 | "rosrun", 17 | "rosun", 18 | "Rviz", 19 | "teleo", 20 | "teleop" 21 | ] 22 | } -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.2) 2 | project(Mapping-and-Navigation-with-TurtleBot3) 3 | 4 | ## Compile as C++11, supported in ROS Kinetic and newer 5 | # add_compile_options(-std=c++11) 6 | 7 | ## Find catkin macros and libraries 8 | ## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) 9 | ## is used, also find other catkin packages 10 | find_package(catkin REQUIRED COMPONENTS 11 | roscpp 12 | rospy 13 | std_msgs 14 | ) 15 | 16 | ## System dependencies are found with CMake's conventions 17 | # find_package(Boost REQUIRED COMPONENTS system) 18 | 19 | 20 | ## Uncomment this if the package has a setup.py. This macro ensures 21 | ## modules and global scripts declared therein get installed 22 | ## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html 23 | # catkin_python_setup() 24 | 25 | ################################################ 26 | ## Declare ROS messages, services and actions ## 27 | ################################################ 28 | 29 | ## To declare and build messages, services or actions from within this 30 | ## package, follow these steps: 31 | ## * Let MSG_DEP_SET be the set of packages whose message types you use in 32 | ## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...). 33 | ## * In the file package.xml: 34 | ## * add a build_depend tag for "message_generation" 35 | ## * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET 36 | ## * If MSG_DEP_SET isn't empty the following dependency has been pulled in 37 | ## but can be declared for certainty nonetheless: 38 | ## * add a exec_depend tag for "message_runtime" 39 | ## * In this file (CMakeLists.txt): 40 | ## * add "message_generation" and every package in MSG_DEP_SET to 41 | ## find_package(catkin REQUIRED COMPONENTS ...) 42 | ## * add "message_runtime" and every package in MSG_DEP_SET to 43 | ## catkin_package(CATKIN_DEPENDS ...) 44 | ## * uncomment the add_*_files sections below as needed 45 | ## and list every .msg/.srv/.action file to be processed 46 | ## * uncomment the generate_messages entry below 47 | ## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...) 48 | 49 | ## Generate messages in the 'msg' folder 50 | # add_message_files( 51 | # FILES 52 | # Message1.msg 53 | # Message2.msg 54 | # ) 55 | 56 | ## Generate services in the 'srv' folder 57 | # add_service_files( 58 | # FILES 59 | # Service1.srv 60 | # Service2.srv 61 | # ) 62 | 63 | ## Generate actions in the 'action' folder 64 | # add_action_files( 65 | # FILES 66 | # Action1.action 67 | # Action2.action 68 | # ) 69 | 70 | ## Generate added messages and services with any dependencies listed here 71 | # generate_messages( 72 | # DEPENDENCIES 73 | # std_msgs 74 | # ) 75 | 76 | ################################################ 77 | ## Declare ROS dynamic reconfigure parameters ## 78 | ################################################ 79 | 80 | ## To declare and build dynamic reconfigure parameters within this 81 | ## package, follow these steps: 82 | ## * In the file package.xml: 83 | ## * add a build_depend and a exec_depend tag for "dynamic_reconfigure" 84 | ## * In this file (CMakeLists.txt): 85 | ## * add "dynamic_reconfigure" to 86 | ## find_package(catkin REQUIRED COMPONENTS ...) 87 | ## * uncomment the "generate_dynamic_reconfigure_options" section below 88 | ## and list every .cfg file to be processed 89 | 90 | ## Generate dynamic reconfigure parameters in the 'cfg' folder 91 | # generate_dynamic_reconfigure_options( 92 | # cfg/DynReconf1.cfg 93 | # cfg/DynReconf2.cfg 94 | # ) 95 | 96 | ################################### 97 | ## catkin specific configuration ## 98 | ################################### 99 | ## The catkin_package macro generates cmake config files for your package 100 | ## Declare things to be passed to dependent projects 101 | ## INCLUDE_DIRS: uncomment this if your package contains header files 102 | ## LIBRARIES: libraries you create in this project that dependent projects also need 103 | ## CATKIN_DEPENDS: catkin_packages dependent projects also need 104 | ## DEPENDS: system dependencies of this project that dependent projects also need 105 | catkin_package( 106 | # INCLUDE_DIRS include 107 | # LIBRARIES Mapping-and-Navigation-with-TurtleBot3 108 | # CATKIN_DEPENDS roscpp rospy std_msgs 109 | # DEPENDS system_lib 110 | ) 111 | 112 | ########### 113 | ## Build ## 114 | ########### 115 | 116 | ## Specify additional locations of header files 117 | ## Your package locations should be listed before other locations 118 | include_directories( 119 | # include 120 | ${catkin_INCLUDE_DIRS} 121 | ) 122 | 123 | ## Declare a C++ library 124 | # add_library(${PROJECT_NAME} 125 | # src/${PROJECT_NAME}/Mapping-and-Navigation-with-TurtleBot3.cpp 126 | # ) 127 | 128 | ## Add cmake target dependencies of the library 129 | ## as an example, code may need to be generated before libraries 130 | ## either from message generation or dynamic reconfigure 131 | # add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) 132 | 133 | ## Declare a C++ executable 134 | ## With catkin_make all packages are built within a single CMake context 135 | ## The recommended prefix ensures that target names across packages don't collide 136 | # add_executable(${PROJECT_NAME}_node src/Mapping-and-Navigation-with-TurtleBot3_node.cpp) 137 | 138 | ## Rename C++ executable without prefix 139 | ## The above recommended prefix causes long target names, the following renames the 140 | ## target back to the shorter version for ease of user use 141 | ## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node" 142 | # set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "") 143 | 144 | ## Add cmake target dependencies of the executable 145 | ## same as for the library above 146 | # add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) 147 | 148 | ## Specify libraries to link a library or executable target against 149 | # target_link_libraries(${PROJECT_NAME}_node 150 | # ${catkin_LIBRARIES} 151 | # ) 152 | 153 | ############# 154 | ## Install ## 155 | ############# 156 | 157 | # all install targets should use catkin DESTINATION variables 158 | # See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html 159 | 160 | ## Mark executable scripts (Python etc.) for installation 161 | ## in contrast to setup.py, you can choose the destination 162 | # catkin_install_python(PROGRAMS 163 | # scripts/my_python_script 164 | # DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} 165 | # ) 166 | 167 | ## Mark executables for installation 168 | ## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html 169 | # install(TARGETS ${PROJECT_NAME}_node 170 | # RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} 171 | # ) 172 | 173 | ## Mark libraries for installation 174 | ## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html 175 | # install(TARGETS ${PROJECT_NAME} 176 | # ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 177 | # LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 178 | # RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} 179 | # ) 180 | 181 | ## Mark cpp header files for installation 182 | # install(DIRECTORY include/${PROJECT_NAME}/ 183 | # DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} 184 | # FILES_MATCHING PATTERN "*.h" 185 | # PATTERN ".svn" EXCLUDE 186 | # ) 187 | 188 | ## Mark other files for installation (e.g. launch and bag files, etc.) 189 | # install(FILES 190 | # # myfile1 191 | # # myfile2 192 | # DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} 193 | # ) 194 | 195 | ############# 196 | ## Testing ## 197 | ############# 198 | 199 | ## Add gtest based cpp test target and link libraries 200 | # catkin_add_gtest(${PROJECT_NAME}-test test/test_Mapping-and-Navigation-with-TurtleBot3.cpp) 201 | # if(TARGET ${PROJECT_NAME}-test) 202 | # target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME}) 203 | # endif() 204 | 205 | ## Add folders to be run by python nosetests 206 | # catkin_add_nosetests(test) 207 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Mapping-and-Navigation-with-TurtleBot3 2 | 3 | ## Description 4 | The primary objective of this project is to implement robotics concepts like mapping, localization, path planning, navigation and much more while augmenting the understanding of the ROS environment. 5 | 6 | ## Status 7 | - Used gmapping package to map the environment. 8 | - Once mapped autonomous navigation can be performed to get the robot reach the desired position. 9 | - Localization can be visualizes independently using AMCL package. 10 | 11 | ## Development process 12 | 13 | 41 | ![Axis and Grid](/images/GitGraph.png) 42 | 43 | ## Description of launch/src files 44 | 45 | #### roslaunch gazebo.launch 46 | 47 | This launched a simulation based environment where robot's data such as joint state, sensor readings and transforms are published to respective topic. While working with real life robots this data will be published by the on-board computing device located in the robot itself. 48 | - The launch file imports an empty world and incorporates obstacles that are defined in the "obstacles.world" file. 49 | - It also uses the **"spawn_model"** node, located inside the gazebo_ros package, to import the robot model of the TurtleBot3 within the Gazebo simulation environment. 50 | - The necessary arguments and parameters are passed to the node to ensure that the robot model is positioned correctly within the simulation environment. 51 | - In the process of **testing the project on a different machine,** a requirement to install the TurtleBot3 packages in advance was encountered. This was due to the models such as walls, boxes being located within the TurtleBot3 package. As a solution, the models were moved inside this project and utilized the GAZEBO_MODEL_PATH environment variable to reference them. 52 | 53 | ![gazebo](/images/gazebo.png) 54 |

Gazebo Simulation environment

55 | 56 |
57 | 58 | ![gazebo_rosgraph](/images/gazebo_rosgraph.png) 59 |

Robot data published by Gazebo environment

60 | 61 | ### Mapping 62 | 63 | For a robot to autonomously move through an environment it should have a map of the environment presaved. The map defines the boundaries and obstacles inside the working space. 64 | 65 | 66 | Gmapping is a open-source package that implements Grid-based FastSLAM algorithm for Simultaneous Localization and Mapping (SLAM).The gmapping package takes laser scan data from lidar and odometry information from the robot's motion, and generates a 2D occupancy grid map of the environment while estimating the robot's pose (position and orientation) within that map. 67 | 68 | #### roslaunch gmapping 69 | - The gmapping package is utilized to generate a map of the environment. 70 | - The **robot_state_publisher** node is launched to visualize the current position of the robot in the generated map, and to provide the transform of the base_scan to the map frame. It read the URDF file and publishes transforms between different frames. 71 | - The gmapping node is initialized with the necessary parameters, and the frame and topic were passed as arguments. 72 | 73 | ![gmapping](/images/gmapping.png) 74 |

Map generation using Gmapping

75 |
76 | 77 | ![gmapping_rosgraph](/images/gmapping_rosgraph.png) 78 |

Visualization of topic, node relation

79 | 80 | ### Localization 81 | 82 | Next step towards autonomy is to localize the robot within the presaved map. 83 | 84 | #### roslaunch robot_localization 85 | - In the initial stages of the project, efforts were made to localize the robot within the generated map. However, upon realization that developing the particle filter from scratch would enhance the understanding of ROS, the localization efforts were suspended, and the focus was shifted to the particle filter implementation. 86 | 87 | #### roslaunch particle_filter 88 | - The Rviz platform is initialized with predefined settings to facilitate visualization of the localization process. 89 | - The global frame of reference is set by importing the map generated by the gmapping package using the **map_server** package. 90 | - The robot model is imported to visualize the robot's position within the generated map. 91 | - To determine the robot's position relative to the global frame of reference (i.e., the map), the odom frame is updated as the robot moves. By attaching the odom frame to the origin of the map, the robot's motion can be visualized in Rviz. 92 | - To establish the transformation between the map and odom frames, the tf package is employed. The node **static_transform_publisher** is used to set the transform between these frames once, as needed. 93 | 94 | #### rosrun localizer 95 | - The program is structured into two sections: the setup and the loop. 96 | - The program functions as a ROS node that subscribes to the "/odom" node to retrieve the robot's current location. 97 | - Additionally, it publishes to two topics, namely **"particle_cloud_PoseArray" and "particle_cloud_Origin",** which receive "PoseArray" data for visualizing the poses of particles. 98 | - The frame of the "PoseArray" is attached to the "map" to connect their tf data. 99 | - Once the frames are attached, the data of each particle is updated with **random poses** with uniform distribution. 100 | - The publishing rate is then set to 50 Hz, and a second delay is given until the system stabilizes. 101 | - During the execution of the node, the pose of each particle is updated according to the robot's pose. Mathematically, the **rotational transform** is applied first, while the **translational transform** is then applied to update the position of the particle with respect to the robot's position. 102 | 103 | ![particle_filter](/images/particle_filter.png) 104 |

Particle Filter in action

105 |
106 | 107 | ![particlefilter_rosgraph](/images/particlefilter_rosgraph.png) 108 | 109 |

Visualization of topic, node relation

110 | 111 | ### AMCL (Adaptive Mote-Carlo Localization) 112 | 113 | AMCL is a localization package that uses a particle filter to estimate the pose of a robot in an environment. AMCL combines information from odometry and laser scans, to estimate the robot's pose with respect to a given map of the environment. 114 | 115 | It maintains a set of particles, each representing a hypothesis of the robot's pose, and updates them based on the sensor measurements and motion model. The particles with higher weights indicate more likely robot poses. It resamples particles based on their weights to obtain a diverse set of hypotheses that represent the robot's pose distribution. The AMCL algorithm adapts the number of particles based on the quality of the localization estimate and can handle dynamic environments where the map or robot's position may change over time. 116 | 117 | 118 | #### roslaunch amcl 119 | 120 | - The AMCL package requires a map against which localization is performed which is provided map_server node within the map_server package. 121 | - robot_state_publisher node from the package with the same name publishes robot transforms by reading the URDF description file of the robot. 122 | - Lastly the AMCL node is launched which performs the task of localization. Various parameters are set which are used to configure the node. 123 | 124 |
125 | 126 |
127 | 128 |

Localization in action

129 |
130 | 131 | ![amcl_rosgraph](/images/amcl_rosgraph.png) 132 |

Visualization of topic, node relation

133 | 134 | ### Navigation 135 | 136 | Autonomous navigation is the process to plan and execute a path in an given or unknown environment to reach a desired destination. Navigation is bigger picture which can be achieved using perception, mapping, localization, path planning, and control modules. 137 | 138 | #### roslaunch navigation 139 | 140 | Once the gazebo simulation is up, the navigation launch files launches another two launch files. 141 | - First is the AMCL launch files which is used to localize to the robot in the map provided by the map_server. This is the same launch file used in AMCL section. 142 | - The seconds file is the move_base which actually is a part of the ROS Navigation Stack. The move is responsible for planning and controlling the motor of the robot to reach the specified destination.The move_base package combines several components to achieve autonomous navigation. 143 | - Global planner which uses **Dijkstra's algorithm** to generate a high level global plan. 144 | - Local planner which uses **Dynamic Window Approach** to performs tasks such as obstacles avoidance and generates the velocity commands to follow the global plan. 145 | - Costmap is a representation of the environment as a grid map with different cost values assigned to different areas, used by the planners to make decisions about path planning and obstacle avoidance. 146 | 147 | 148 | ![navigation](/images/navigation.gif) 149 |

Autonomous navigation of TurtleBot3

150 | 151 |
152 | 153 | ![navigation_all_topics](/images/navigation_all_topics.png) 154 |

Visualization of all active topic, node relation

155 |
156 | 157 | ![navigation_nodes_only](/images/navigation_nodes_only.png) 158 | 159 |

Visualization of inter-node relation

160 | 161 | 162 | #### rosrun initialPose 163 | 164 | - The AMCL node needs to know the initial Pose of the robot for the robot to localize, this can be done by publishing to the topic **/initialpose**. 165 | - This script instead of running several times execute only onces. First it waits for message to publish on **/odom** topic, which is the position of the robot from the origin of the map. After reception of the message secondary felids such as frame_id and covariance matrix is attached and the message is published to the initialpose topic. 166 | 167 | ![initialPose](/images/initialPose.gif) 168 |

Publishment to topic initialpose

169 | 170 | 171 | #### Todo 172 | - Drive the robot until robot is localized within the threshold limit. This function can be added with the initialPose node. 173 | - Publish goalPosition on topic /move_base_simple/Goal, once reached publish another Goal Position, use PID controller to check for position validity. 174 | - Perform same task of getting the robot reach a specific task but this time use rosservices to check if the robot has reached the position or not. 175 | 176 | ## Experimentations 177 | 178 | ### 360 vs 6 Samples of Lidar Sensor 179 | 180 | A experiment was conducted to observe the effects of number of samples and the coverage area of the lidar sensor over its perception of the environment. 181 | Surprisingly the performance of the robot with 360 samples and 6 samples were nearly same while needing to adjust few parameter like increasing the update rate and reducing the robot's speed. 182 | 183 | 184 | 185 |
186 | 187 |
188 | 189 |

Localization of robot with 360 and 6 samples of lidar sensor

190 | 191 | **Does this imples that a Lidar sensor can be swapped with few distance sensors for Swarm Robotics Application?** 192 | 193 | Yet to experiment on: 194 | - Do we really need localization for autonomous navigation? 195 | - Does the robot need to have a map presaved for autonomous mobility. 196 | - Navigation but the map is provided by gmapping package. 197 | - Mapping and navigation using camera instead of lidar? -------------------------------------------------------------------------------- /images/360vs6_samples.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maker-ATOM/Mapping-and-Navigation-with-TurtleBot3/8b178436cb83ef373d99a5f22a94f35dd2edd52d/images/360vs6_samples.gif -------------------------------------------------------------------------------- /images/GitGraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maker-ATOM/Mapping-and-Navigation-with-TurtleBot3/8b178436cb83ef373d99a5f22a94f35dd2edd52d/images/GitGraph.png -------------------------------------------------------------------------------- /images/amcl_rosgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maker-ATOM/Mapping-and-Navigation-with-TurtleBot3/8b178436cb83ef373d99a5f22a94f35dd2edd52d/images/amcl_rosgraph.png -------------------------------------------------------------------------------- /images/gazebo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maker-ATOM/Mapping-and-Navigation-with-TurtleBot3/8b178436cb83ef373d99a5f22a94f35dd2edd52d/images/gazebo.png -------------------------------------------------------------------------------- /images/gazebo_rosgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maker-ATOM/Mapping-and-Navigation-with-TurtleBot3/8b178436cb83ef373d99a5f22a94f35dd2edd52d/images/gazebo_rosgraph.png -------------------------------------------------------------------------------- /images/gmapping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maker-ATOM/Mapping-and-Navigation-with-TurtleBot3/8b178436cb83ef373d99a5f22a94f35dd2edd52d/images/gmapping.png -------------------------------------------------------------------------------- /images/gmapping_rosgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maker-ATOM/Mapping-and-Navigation-with-TurtleBot3/8b178436cb83ef373d99a5f22a94f35dd2edd52d/images/gmapping_rosgraph.png -------------------------------------------------------------------------------- /images/initialPose.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maker-ATOM/Mapping-and-Navigation-with-TurtleBot3/8b178436cb83ef373d99a5f22a94f35dd2edd52d/images/initialPose.gif -------------------------------------------------------------------------------- /images/localization.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maker-ATOM/Mapping-and-Navigation-with-TurtleBot3/8b178436cb83ef373d99a5f22a94f35dd2edd52d/images/localization.gif -------------------------------------------------------------------------------- /images/navigation.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maker-ATOM/Mapping-and-Navigation-with-TurtleBot3/8b178436cb83ef373d99a5f22a94f35dd2edd52d/images/navigation.gif -------------------------------------------------------------------------------- /images/navigation_all_topics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maker-ATOM/Mapping-and-Navigation-with-TurtleBot3/8b178436cb83ef373d99a5f22a94f35dd2edd52d/images/navigation_all_topics.png -------------------------------------------------------------------------------- /images/navigation_nodes_only.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maker-ATOM/Mapping-and-Navigation-with-TurtleBot3/8b178436cb83ef373d99a5f22a94f35dd2edd52d/images/navigation_nodes_only.png -------------------------------------------------------------------------------- /images/particle_filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maker-ATOM/Mapping-and-Navigation-with-TurtleBot3/8b178436cb83ef373d99a5f22a94f35dd2edd52d/images/particle_filter.png -------------------------------------------------------------------------------- /images/particlefilter_rosgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maker-ATOM/Mapping-and-Navigation-with-TurtleBot3/8b178436cb83ef373d99a5f22a94f35dd2edd52d/images/particlefilter_rosgraph.png -------------------------------------------------------------------------------- /launch/amcl.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 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 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /launch/gazebo.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 22 | 23 | 28 | 29 | -------------------------------------------------------------------------------- /launch/gmapping.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 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 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /launch/move_base.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /launch/navigation.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /launch/particle_Filter.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 15 | 16 | -------------------------------------------------------------------------------- /launch/robot_localization.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /maps/intialmap.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maker-ATOM/Mapping-and-Navigation-with-TurtleBot3/8b178436cb83ef373d99a5f22a94f35dd2edd52d/maps/intialmap.pgm -------------------------------------------------------------------------------- /maps/map.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maker-ATOM/Mapping-and-Navigation-with-TurtleBot3/8b178436cb83ef373d99a5f22a94f35dd2edd52d/maps/map.pgm -------------------------------------------------------------------------------- /maps/map.yaml: -------------------------------------------------------------------------------- 1 | image: map.pgm 2 | resolution: 0.050000 3 | origin: [-13.800000, -13.800000, 0.000000] 4 | negate: 0 5 | occupied_thresh: 0.65 6 | free_thresh: 0.196 7 | 8 | -------------------------------------------------------------------------------- /meshes/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "python.autoComplete.extraPaths": [ 3 | "/home/aditya/catkin_ws/devel/lib/python3/dist-packages", 4 | "/opt/ros/noetic/lib/python3/dist-packages" 5 | ] 6 | } -------------------------------------------------------------------------------- /meshes/burger_base.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maker-ATOM/Mapping-and-Navigation-with-TurtleBot3/8b178436cb83ef373d99a5f22a94f35dd2edd52d/meshes/burger_base.stl -------------------------------------------------------------------------------- /meshes/lds.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maker-ATOM/Mapping-and-Navigation-with-TurtleBot3/8b178436cb83ef373d99a5f22a94f35dd2edd52d/meshes/lds.stl -------------------------------------------------------------------------------- /meshes/left_tire.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maker-ATOM/Mapping-and-Navigation-with-TurtleBot3/8b178436cb83ef373d99a5f22a94f35dd2edd52d/meshes/left_tire.stl -------------------------------------------------------------------------------- /meshes/right_tire.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maker-ATOM/Mapping-and-Navigation-with-TurtleBot3/8b178436cb83ef373d99a5f22a94f35dd2edd52d/meshes/right_tire.stl -------------------------------------------------------------------------------- /models/turtlebot3_plaza/goal_box/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | goal_box 4 | 1.0 5 | model.sdf 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /models/turtlebot3_plaza/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.5 0.5 0.001 11 | 12 | 13 | 14 | 18 | 1 0 0 1 19 | 20 | 21 | 0 0 0 0 -0 0 22 | 23 | 1 24 | 25 | 26 | -------------------------------------------------------------------------------- /models/turtlebot3_plaza/model.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | turtlebot3_plaza 4 | 1.0 5 | model.sdf 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /models/turtlebot3_plaza/model.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 0 0 0 0 -0 0 5 | 6 | 7 | 8 | 9 | 5 0.15 0.5 10 | 11 | 12 | 0 0 0.25 0 -0 0 13 | 14 | 15 | 0 0 0.25 0 -0 0 16 | 17 | 18 | 5 0.15 0.5 19 | 20 | 21 | 22 | 26 | 1 1 1 1 27 | 28 | 29 | -2.425 0 0 0 -0 1.5708 30 | 31 | 32 | 33 | 34 | 35 | 1 0.15 0.5 36 | 37 | 38 | 0 0 0.25 0 -0 0 39 | 40 | 41 | 0 0 0.25 0 -0 0 42 | 43 | 44 | 1 0.15 0.5 45 | 46 | 47 | 48 | 52 | 1 1 1 1 53 | 54 | 55 | -1.937 -1.467 0 0 -0 0 56 | 57 | 58 | 59 | 60 | 61 | 1 0.15 0.5 62 | 63 | 64 | 0 0 0.25 0 -0 0 65 | 66 | 67 | 0 0 0.25 0 -0 0 68 | 69 | 70 | 1 0.15 0.5 71 | 72 | 73 | 74 | 78 | 1 1 1 1 79 | 80 | 81 | -0.22 -1.866 0 0 0 -1.5708 82 | 83 | 84 | 85 | 86 | 87 | 1 0.15 0.5 88 | 89 | 90 | 0 0 0.25 0 -0 0 91 | 92 | 93 | 0 0 0.25 0 -0 0 94 | 95 | 96 | 1 0.15 0.5 97 | 98 | 99 | 100 | 104 | 1 1 1 1 105 | 106 | 107 | 1.195 -1.002 0 0 -0 1.5708 108 | 109 | 110 | 111 | 112 | 113 | 1 0.15 0.5 114 | 115 | 116 | 0 0 0.25 0 -0 0 117 | 118 | 119 | 0 0 0.25 0 -0 0 120 | 121 | 122 | 1 0.15 0.5 123 | 124 | 125 | 126 | 130 | 1 1 1 1 131 | 132 | 133 | 1.288 1.93 0 0 0 -1.5708 134 | 135 | 136 | 137 | 138 | 139 | 1 0.15 0.5 140 | 141 | 142 | 0 0 0.25 0 -0 0 143 | 144 | 145 | 0 0 0.25 0 -0 0 146 | 147 | 148 | 1 0.15 0.5 149 | 150 | 151 | 152 | 156 | 1 1 1 1 157 | 158 | 159 | 1.91128 0.4632 0 0 -0 0 160 | 161 | 162 | 163 | 164 | 165 | 5 0.15 0.5 166 | 167 | 168 | 0 0 0.25 0 -0 0 169 | 170 | 171 | 0 0 0.25 0 -0 0 172 | 173 | 174 | 5 0.15 0.5 175 | 176 | 177 | 178 | 182 | 1 1 1 1 183 | 184 | 185 | 0 2.425 0 0 -0 0 186 | 187 | 188 | 189 | 190 | 191 | 1 0.15 0.5 192 | 193 | 194 | 0 0 0.25 0 -0 0 195 | 196 | 197 | 0 0 0.25 0 -0 0 198 | 199 | 200 | 1 0.15 0.5 201 | 202 | 203 | 204 | 208 | 1 1 1 1 209 | 210 | 211 | 0.204 0.215 0 0 0 -1.5708 212 | 213 | 214 | 215 | 216 | 217 | 5 0.15 0.5 218 | 219 | 220 | 0 0 0.25 0 -0 0 221 | 222 | 223 | 0 0 0.25 0 -0 0 224 | 225 | 226 | 5 0.15 0.5 227 | 228 | 229 | 230 | 234 | 1 1 1 1 235 | 236 | 237 | 2.425 0 0 0 0 -1.5708 238 | 239 | 240 | 241 | 242 | 243 | 5 0.15 0.5 244 | 245 | 246 | 0 0 0.25 0 -0 0 247 | 248 | 249 | 0 0 0.25 0 -0 0 250 | 251 | 252 | 5 0.15 0.5 253 | 254 | 255 | 256 | 260 | 1 1 1 1 261 | 262 | 263 | 0 -2.425 0 0 -0 3.14159 264 | 265 | 266 | 267 | 268 | 269 | 1 0.15 0.5 270 | 271 | 272 | 0 0 0.25 0 -0 0 273 | 274 | 275 | 0 0 0.25 0 -0 0 276 | 277 | 278 | 1 0.15 0.5 279 | 280 | 281 | 282 | 286 | 1 1 1 1 287 | 288 | 289 | -1.064 1.548 0 0 -0 0 290 | 291 | 292 | 293 | 294 | 295 | 1 0.15 0.5 296 | 297 | 298 | 0 0 0.25 0 -0 0 299 | 300 | 301 | 0 0 0.25 0 -0 0 302 | 303 | 304 | 1 0.15 0.5 305 | 306 | 307 | 308 | 312 | 1 1 1 1 313 | 314 | 315 | -1.502 0.092 0 0 0 -1.5708 316 | 317 | 1 318 | 319 | 320 | -------------------------------------------------------------------------------- /package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Mapping-and-Navigation-with-TurtleBot3 4 | 0.0.0 5 | The Mapping-and-Navigation-with-TurtleBot3 package 6 | 7 | 8 | 9 | 10 | aditya 11 | 12 | 13 | 14 | 15 | 16 | TODO 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 | 47 | 48 | 49 | 50 | 51 | catkin 52 | roscpp 53 | rospy 54 | std_msgs 55 | roscpp 56 | rospy 57 | std_msgs 58 | roscpp 59 | rospy 60 | std_msgs 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /param/base_local_planner_params.yaml: -------------------------------------------------------------------------------- 1 | TrajectoryPlannerROS: 2 | 3 | # Robot Configuration Parameters 4 | max_vel_x: 0.18 5 | min_vel_x: 0.08 6 | 7 | max_vel_theta: 1.0 8 | min_vel_theta: -1.0 9 | min_in_place_vel_theta: 1.0 10 | 11 | acc_lim_x: 1.0 12 | acc_lim_y: 0.0 13 | acc_lim_theta: 0.6 14 | 15 | # Goal Tolerance Parameters 16 | xy_goal_tolerance: 0.10 17 | yaw_goal_tolerance: 0.05 18 | 19 | # Differential-drive robot configuration 20 | holonomic_robot: false 21 | 22 | # Forward Simulation Parameters 23 | sim_time: 0.8 24 | vx_samples: 18 25 | vtheta_samples: 20 26 | sim_granularity: 0.05 27 | -------------------------------------------------------------------------------- /param/costmap_common_params_burger.yaml: -------------------------------------------------------------------------------- 1 | obstacle_range: 3.0 2 | raytrace_range: 3.5 3 | 4 | footprint: [[-0.105, -0.105], [-0.105, 0.105], [0.041, 0.105], [0.041, -0.105]] 5 | #robot_radius: 0.105 6 | 7 | inflation_radius: 1.0 8 | cost_scaling_factor: 3.0 9 | 10 | map_type: costmap 11 | observation_sources: scan 12 | scan: {sensor_frame: base_scan, data_type: LaserScan, topic: scan, marking: true, clearing: true} -------------------------------------------------------------------------------- /param/dwa_local_planner_params_burger.yaml: -------------------------------------------------------------------------------- 1 | DWAPlannerROS: 2 | 3 | # Robot Configuration Parameters 4 | max_vel_x: 0.22 5 | min_vel_x: -0.22 6 | 7 | max_vel_y: 0.0 8 | min_vel_y: 0.0 9 | 10 | # The velocity when robot is moving in a straight line 11 | max_vel_trans: 0.22 12 | min_vel_trans: 0.11 13 | 14 | max_vel_theta: 2.75 15 | min_vel_theta: 1.37 16 | 17 | acc_lim_x: 2.5 18 | acc_lim_y: 0.0 19 | acc_lim_theta: 3.2 20 | 21 | # Goal Tolerance Parameters 22 | xy_goal_tolerance: 0.05 23 | yaw_goal_tolerance: 0.17 24 | latch_xy_goal_tolerance: false 25 | 26 | # Forward Simulation Parameters 27 | sim_time: 1.5 28 | vx_samples: 20 29 | vy_samples: 0 30 | vth_samples: 40 31 | controller_frequency: 10.0 32 | 33 | # Trajectory Scoring Parameters 34 | path_distance_bias: 32.0 35 | goal_distance_bias: 20.0 36 | occdist_scale: 0.02 37 | forward_point_distance: 0.325 38 | stop_time_buffer: 0.2 39 | scaling_speed: 0.25 40 | max_scaling_factor: 0.2 41 | 42 | # Oscillation Prevention Parameters 43 | oscillation_reset_dist: 0.05 44 | 45 | # Debugging 46 | publish_traj_pc : true 47 | publish_cost_grid_pc: true 48 | -------------------------------------------------------------------------------- /param/global_costmap_params.yaml: -------------------------------------------------------------------------------- 1 | global_costmap: 2 | global_frame: map 3 | robot_base_frame: base_footprint 4 | 5 | update_frequency: 10.0 6 | publish_frequency: 10.0 7 | transform_tolerance: 0.5 8 | 9 | static_map: true 10 | 11 | -------------------------------------------------------------------------------- /param/local_costmap_params.yaml: -------------------------------------------------------------------------------- 1 | local_costmap: 2 | global_frame: odom 3 | robot_base_frame: base_footprint 4 | 5 | update_frequency: 10.0 6 | publish_frequency: 10.0 7 | transform_tolerance: 0.5 8 | 9 | static_map: false 10 | rolling_window: true 11 | width: 3 12 | height: 3 13 | resolution: 0.05 14 | 15 | -------------------------------------------------------------------------------- /param/move_base_params.yaml: -------------------------------------------------------------------------------- 1 | shutdown_costmaps: false 2 | controller_frequency: 10.0 3 | planner_patience: 5.0 4 | controller_patience: 15.0 5 | conservative_reset_dist: 3.0 6 | planner_frequency: 5.0 7 | oscillation_timeout: 10.0 8 | oscillation_distance: 0.2 9 | 10 | -------------------------------------------------------------------------------- /rviz/gmapping.rviz: -------------------------------------------------------------------------------- 1 | Panels: 2 | - Class: rviz/Displays 3 | Help Height: 78 4 | Name: Displays 5 | Property Tree Widget: 6 | Expanded: 7 | - /Global Options1 8 | - /Status1 9 | - /LaserScan1 10 | Splitter Ratio: 0.5 11 | Tree Height: 363 12 | - Class: rviz/Selection 13 | Name: Selection 14 | - Class: rviz/Tool Properties 15 | Expanded: 16 | - /2D Pose Estimate1 17 | - /2D Nav Goal1 18 | - /Publish Point1 19 | Name: Tool Properties 20 | Splitter Ratio: 0.5886790156364441 21 | - Class: rviz/Views 22 | Expanded: 23 | - /Current View1 24 | Name: Views 25 | Splitter Ratio: 0.5 26 | - Class: rviz/Time 27 | Name: Time 28 | SyncMode: 0 29 | SyncSource: LaserScan 30 | Preferences: 31 | PromptSaveOnExit: true 32 | Toolbars: 33 | toolButtonStyle: 2 34 | Visualization Manager: 35 | Class: "" 36 | Displays: 37 | - Alpha: 0.5 38 | Cell Size: 1 39 | Class: rviz/Grid 40 | Color: 160; 160; 164 41 | Enabled: true 42 | Line Style: 43 | Line Width: 0.029999999329447746 44 | Value: Lines 45 | Name: Grid 46 | Normal Cell Count: 0 47 | Offset: 48 | X: 0 49 | Y: 0 50 | Z: 0 51 | Plane: XY 52 | Plane Cell Count: 10 53 | Reference Frame: 54 | Value: true 55 | - Alpha: 0.699999988079071 56 | Class: rviz/Map 57 | Color Scheme: map 58 | Draw Behind: false 59 | Enabled: true 60 | Name: Map 61 | Topic: /map 62 | Unreliable: false 63 | Use Timestamp: false 64 | Value: true 65 | - Alpha: 0.5 66 | Autocompute Intensity Bounds: true 67 | Autocompute Value Bounds: 68 | Max Value: 2.3127541542053223 69 | Min Value: -2.3566946983337402 70 | Value: true 71 | Axis: Y 72 | Channel Name: intensity 73 | Class: rviz/LaserScan 74 | Color: 0; 255; 0 75 | Color Transformer: FlatColor 76 | Decay Time: 0 77 | Enabled: true 78 | Invert Rainbow: false 79 | Max Color: 255; 255; 255 80 | Min Color: 0; 0; 0 81 | Name: LaserScan 82 | Position Transformer: XYZ 83 | Queue Size: 10 84 | Selectable: true 85 | Size (Pixels): 3 86 | Size (m): 0.029999999329447746 87 | Style: Flat Squares 88 | Topic: /scan 89 | Unreliable: false 90 | Use Fixed Frame: true 91 | Use rainbow: true 92 | Value: true 93 | - Alpha: 1 94 | Class: rviz/RobotModel 95 | Collision Enabled: false 96 | Enabled: true 97 | Links: 98 | All Links Enabled: true 99 | Expand Joint Details: false 100 | Expand Link Details: false 101 | Expand Tree: false 102 | Link Tree Style: Links in Alphabetic Order 103 | base_footprint: 104 | Alpha: 1 105 | Show Axes: false 106 | Show Trail: false 107 | base_link: 108 | Alpha: 1 109 | Show Axes: false 110 | Show Trail: false 111 | Value: true 112 | base_scan: 113 | Alpha: 1 114 | Show Axes: false 115 | Show Trail: false 116 | Value: true 117 | caster_back_link: 118 | Alpha: 1 119 | Show Axes: false 120 | Show Trail: false 121 | Value: true 122 | imu_link: 123 | Alpha: 1 124 | Show Axes: false 125 | Show Trail: false 126 | wheel_left_link: 127 | Alpha: 1 128 | Show Axes: false 129 | Show Trail: false 130 | Value: true 131 | wheel_right_link: 132 | Alpha: 1 133 | Show Axes: false 134 | Show Trail: false 135 | Value: true 136 | Name: RobotModel 137 | Robot Description: robot_description 138 | TF Prefix: "" 139 | Update Interval: 0 140 | Value: true 141 | Visual Enabled: true 142 | Enabled: true 143 | Global Options: 144 | Background Color: 48; 48; 48 145 | Default Light: true 146 | Fixed Frame: map 147 | Frame Rate: 30 148 | Name: root 149 | Tools: 150 | - Class: rviz/Interact 151 | Hide Inactive Objects: true 152 | - Class: rviz/MoveCamera 153 | - Class: rviz/Select 154 | - Class: rviz/FocusCamera 155 | - Class: rviz/Measure 156 | - Class: rviz/SetInitialPose 157 | Theta std deviation: 0.2617993950843811 158 | Topic: /initialpose 159 | X std deviation: 0.5 160 | Y std deviation: 0.5 161 | - Class: rviz/SetGoal 162 | Topic: /move_base_simple/goal 163 | - Class: rviz/PublishPoint 164 | Single click: true 165 | Topic: /clicked_point 166 | Value: true 167 | Views: 168 | Current: 169 | Class: rviz/Orbit 170 | Distance: 6.980874061584473 171 | Enable Stereo Rendering: 172 | Stereo Eye Separation: 0.05999999865889549 173 | Stereo Focal Distance: 1 174 | Swap Stereo Eyes: false 175 | Value: false 176 | Field of View: 0.7853981852531433 177 | Focal Point: 178 | X: 0.5452069044113159 179 | Y: -0.02987780049443245 180 | Z: 0.00025243873824365437 181 | Focal Shape Fixed Size: true 182 | Focal Shape Size: 0.05000000074505806 183 | Invert Z Axis: false 184 | Name: Current View 185 | Near Clip Distance: 0.009999999776482582 186 | Pitch: 1.5697963237762451 187 | Target Frame: 188 | Yaw: 4.7131853103637695 189 | Saved: ~ 190 | Window Geometry: 191 | Displays: 192 | collapsed: true 193 | Height: 1007 194 | Hide Left Dock: true 195 | Hide Right Dock: true 196 | QMainWindow State: 000000ff00000000fd00000004000000000000015600000351fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073000000003d00000351000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f00000351fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000003d00000351000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004180000003efc0100000002fb0000000800540069006d0065010000000000000418000003bc00fffffffb0000000800540069006d00650100000000000004500000000000000000000004180000035100000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 197 | Selection: 198 | collapsed: false 199 | Time: 200 | collapsed: false 201 | Tool Properties: 202 | collapsed: false 203 | Views: 204 | collapsed: true 205 | Width: 1048 206 | X: 64 207 | Y: 27 208 | -------------------------------------------------------------------------------- /rviz/localization.rviz: -------------------------------------------------------------------------------- 1 | Panels: 2 | - Class: rviz/Displays 3 | Help Height: 78 4 | Name: Displays 5 | Property Tree Widget: 6 | Expanded: 7 | - /TF1/Frames1 8 | - /TF1/Tree1 9 | - /Amcl Particles1 10 | Splitter Ratio: 0.5 11 | Tree Height: 787 12 | - Class: rviz/Selection 13 | Name: Selection 14 | - Class: rviz/Tool Properties 15 | Expanded: 16 | - /2D Pose Estimate1 17 | - /2D Nav Goal1 18 | Name: Tool Properties 19 | Splitter Ratio: 0.5886790156364441 20 | - Class: rviz/Views 21 | Expanded: 22 | - /Current View1 23 | Name: Views 24 | Splitter Ratio: 0.5 25 | - Class: rviz/Time 26 | Name: Time 27 | SyncMode: 0 28 | SyncSource: LaserScan 29 | Preferences: 30 | PromptSaveOnExit: true 31 | Toolbars: 32 | toolButtonStyle: 2 33 | Visualization Manager: 34 | Class: "" 35 | Displays: 36 | - Alpha: 0.5 37 | Cell Size: 1 38 | Class: rviz/Grid 39 | Color: 160; 160; 164 40 | Enabled: true 41 | Line Style: 42 | Line Width: 0.029999999329447746 43 | Value: Lines 44 | Name: Grid 45 | Normal Cell Count: 0 46 | Offset: 47 | X: 0 48 | Y: 0 49 | Z: 0 50 | Plane: XY 51 | Plane Cell Count: 20 52 | Reference Frame: 53 | Value: true 54 | - Alpha: 1 55 | Class: rviz/RobotModel 56 | Collision Enabled: false 57 | Enabled: true 58 | Links: 59 | All Links Enabled: true 60 | Expand Joint Details: false 61 | Expand Link Details: false 62 | Expand Tree: false 63 | Link Tree Style: Links in Alphabetic Order 64 | base_footprint: 65 | Alpha: 1 66 | Show Axes: false 67 | Show Trail: false 68 | base_link: 69 | Alpha: 1 70 | Show Axes: false 71 | Show Trail: false 72 | Value: true 73 | base_scan: 74 | Alpha: 1 75 | Show Axes: false 76 | Show Trail: false 77 | Value: true 78 | caster_back_link: 79 | Alpha: 1 80 | Show Axes: false 81 | Show Trail: false 82 | Value: true 83 | imu_link: 84 | Alpha: 1 85 | Show Axes: false 86 | Show Trail: false 87 | wheel_left_link: 88 | Alpha: 1 89 | Show Axes: false 90 | Show Trail: false 91 | Value: true 92 | wheel_right_link: 93 | Alpha: 1 94 | Show Axes: false 95 | Show Trail: false 96 | Value: true 97 | Name: RobotModel 98 | Robot Description: robot_description 99 | TF Prefix: "" 100 | Update Interval: 0 101 | Value: true 102 | Visual Enabled: true 103 | - Class: rviz/TF 104 | Enabled: false 105 | Frame Timeout: 15 106 | Frames: 107 | All Enabled: false 108 | Marker Alpha: 1 109 | Marker Scale: 1 110 | Name: TF 111 | Show Arrows: true 112 | Show Axes: true 113 | Show Names: false 114 | Tree: 115 | {} 116 | Update Interval: 0 117 | Value: false 118 | - Alpha: 1 119 | Autocompute Intensity Bounds: true 120 | Autocompute Value Bounds: 121 | Max Value: 10 122 | Min Value: -10 123 | Value: true 124 | Axis: Z 125 | Channel Name: intensity 126 | Class: rviz/LaserScan 127 | Color: 0; 255; 0 128 | Color Transformer: FlatColor 129 | Decay Time: 0 130 | Enabled: true 131 | Invert Rainbow: false 132 | Max Color: 255; 255; 255 133 | Min Color: 0; 0; 0 134 | Name: LaserScan 135 | Position Transformer: XYZ 136 | Queue Size: 10 137 | Selectable: true 138 | Size (Pixels): 3 139 | Size (m): 0.030000001192092896 140 | Style: Flat Squares 141 | Topic: /scan 142 | Unreliable: false 143 | Use Fixed Frame: true 144 | Use rainbow: true 145 | Value: true 146 | - Class: rviz/Image 147 | Enabled: false 148 | Image Topic: /raspicam_node/image 149 | Max Value: 1 150 | Median window: 5 151 | Min Value: 0 152 | Name: Image 153 | Normalize Range: true 154 | Queue Size: 2 155 | Transport Hint: compressed 156 | Unreliable: false 157 | Value: false 158 | - Alpha: 0.699999988079071 159 | Class: rviz/Map 160 | Color Scheme: map 161 | Draw Behind: false 162 | Enabled: true 163 | Name: Map 164 | Topic: /map 165 | Unreliable: false 166 | Use Timestamp: false 167 | Value: true 168 | - Alpha: 1 169 | Buffer Length: 1 170 | Class: rviz/Path 171 | Color: 0; 0; 0 172 | Enabled: true 173 | Head Diameter: 0.30000001192092896 174 | Head Length: 0.20000000298023224 175 | Length: 0.30000001192092896 176 | Line Style: Lines 177 | Line Width: 0.029999999329447746 178 | Name: Planner Plan 179 | Offset: 180 | X: 0 181 | Y: 0 182 | Z: 0 183 | Pose Color: 255; 85; 255 184 | Pose Style: None 185 | Queue Size: 10 186 | Radius: 0.029999999329447746 187 | Shaft Diameter: 0.10000000149011612 188 | Shaft Length: 0.10000000149011612 189 | Topic: /move_base/NavfnROS/plan 190 | Unreliable: false 191 | Value: true 192 | - Alpha: 1 193 | Arrow Length: 0.05000000074505806 194 | Axes Length: 0.30000001192092896 195 | Axes Radius: 0.009999999776482582 196 | Class: rviz/PoseArray 197 | Color: 255; 102; 0 198 | Enabled: true 199 | Head Length: 0.03999999910593033 200 | Head Radius: 0.03500000014901161 201 | Name: Amcl Particles 202 | Queue Size: 10 203 | Shaft Length: 0.07500000298023224 204 | Shaft Radius: 0.009999999776482582 205 | Shape: Arrow (3D) 206 | Topic: /particlecloud 207 | Unreliable: false 208 | Value: true 209 | Enabled: true 210 | Global Options: 211 | Background Color: 48; 48; 48 212 | Default Light: true 213 | Fixed Frame: map 214 | Frame Rate: 30 215 | Name: root 216 | Tools: 217 | - Class: rviz/MoveCamera 218 | - Class: rviz/Interact 219 | Hide Inactive Objects: true 220 | - Class: rviz/Select 221 | - Class: rviz/SetInitialPose 222 | Theta std deviation: 0.2617993950843811 223 | Topic: /initialpose 224 | X std deviation: 0.5 225 | Y std deviation: 0.5 226 | - Class: rviz/SetGoal 227 | Topic: /move_base_simple/goal 228 | - Class: rviz/Measure 229 | Value: true 230 | Views: 231 | Current: 232 | Angle: 0 233 | Class: rviz/TopDownOrtho 234 | Enable Stereo Rendering: 235 | Stereo Eye Separation: 0.05999999865889549 236 | Stereo Focal Distance: 1 237 | Swap Stereo Eyes: false 238 | Value: false 239 | Invert Z Axis: false 240 | Name: Current View 241 | Near Clip Distance: 0.009999999776482582 242 | Scale: 170.3611602783203 243 | Target Frame: 244 | X: 0 245 | Y: 0 246 | Saved: ~ 247 | Window Geometry: 248 | Displays: 249 | collapsed: false 250 | Height: 1016 251 | Hide Left Dock: false 252 | Hide Right Dock: true 253 | Image: 254 | collapsed: false 255 | QMainWindow State: 000000ff00000000fd0000000400000000000001560000039efc0200000007fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d0000039e000000c900fffffffb0000000a0049006d0061006700650000000317000000cc0000001600fffffffb0000000a0049006d0061006700650000000330000000ce0000000000000000000000010000010f0000039efc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000003d0000039e000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004a00000003efc0100000002fb0000000800540069006d00650000000000000004a00000041800fffffffb0000000800540069006d00650100000000000004500000000000000000000003a30000039e00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 256 | Selection: 257 | collapsed: false 258 | Time: 259 | collapsed: false 260 | Tool Properties: 261 | collapsed: false 262 | Views: 263 | collapsed: true 264 | Width: 1279 265 | X: 64 266 | Y: 27 267 | -------------------------------------------------------------------------------- /rviz/navigation.rviz: -------------------------------------------------------------------------------- 1 | Panels: 2 | - Class: rviz/Displays 3 | Help Height: 78 4 | Name: Displays 5 | Property Tree Widget: 6 | Expanded: 7 | - /TF1/Frames1 8 | - /TF1/Tree1 9 | - /Global Map1/Costmap1 10 | - /Global Map1/Planner1 11 | - /Local Map1 12 | - /Local Map1/Polygon1 13 | - /Local Map1/Costmap1 14 | - /Local Map1/Planner1 15 | Splitter Ratio: 0.5 16 | Tree Height: 787 17 | - Class: rviz/Selection 18 | Name: Selection 19 | - Class: rviz/Tool Properties 20 | Expanded: 21 | - /2D Pose Estimate1 22 | - /2D Nav Goal1 23 | Name: Tool Properties 24 | Splitter Ratio: 0.5886790156364441 25 | - Class: rviz/Views 26 | Expanded: 27 | - /Current View1 28 | Name: Views 29 | Splitter Ratio: 0.5 30 | - Class: rviz/Time 31 | Name: Time 32 | SyncMode: 0 33 | SyncSource: LaserScan 34 | Preferences: 35 | PromptSaveOnExit: true 36 | Toolbars: 37 | toolButtonStyle: 2 38 | Visualization Manager: 39 | Class: "" 40 | Displays: 41 | - Alpha: 0.5 42 | Cell Size: 1 43 | Class: rviz/Grid 44 | Color: 160; 160; 164 45 | Enabled: true 46 | Line Style: 47 | Line Width: 0.029999999329447746 48 | Value: Lines 49 | Name: Grid 50 | Normal Cell Count: 0 51 | Offset: 52 | X: 0 53 | Y: 0 54 | Z: 0 55 | Plane: XY 56 | Plane Cell Count: 20 57 | Reference Frame: 58 | Value: true 59 | - Alpha: 1 60 | Class: rviz/RobotModel 61 | Collision Enabled: false 62 | Enabled: true 63 | Links: 64 | All Links Enabled: true 65 | Expand Joint Details: false 66 | Expand Link Details: false 67 | Expand Tree: false 68 | Link Tree Style: Links in Alphabetic Order 69 | base_footprint: 70 | Alpha: 1 71 | Show Axes: false 72 | Show Trail: false 73 | base_link: 74 | Alpha: 1 75 | Show Axes: false 76 | Show Trail: false 77 | Value: true 78 | base_scan: 79 | Alpha: 1 80 | Show Axes: false 81 | Show Trail: false 82 | Value: true 83 | caster_back_link: 84 | Alpha: 1 85 | Show Axes: false 86 | Show Trail: false 87 | Value: true 88 | imu_link: 89 | Alpha: 1 90 | Show Axes: false 91 | Show Trail: false 92 | wheel_left_link: 93 | Alpha: 1 94 | Show Axes: false 95 | Show Trail: false 96 | Value: true 97 | wheel_right_link: 98 | Alpha: 1 99 | Show Axes: false 100 | Show Trail: false 101 | Value: true 102 | Name: RobotModel 103 | Robot Description: robot_description 104 | TF Prefix: "" 105 | Update Interval: 0 106 | Value: true 107 | Visual Enabled: true 108 | - Class: rviz/TF 109 | Enabled: false 110 | Frame Timeout: 15 111 | Frames: 112 | All Enabled: false 113 | Marker Alpha: 1 114 | Marker Scale: 1 115 | Name: TF 116 | Show Arrows: true 117 | Show Axes: true 118 | Show Names: false 119 | Tree: 120 | {} 121 | Update Interval: 0 122 | Value: false 123 | - Alpha: 1 124 | Autocompute Intensity Bounds: true 125 | Autocompute Value Bounds: 126 | Max Value: 10 127 | Min Value: -10 128 | Value: true 129 | Axis: Z 130 | Channel Name: intensity 131 | Class: rviz/LaserScan 132 | Color: 0; 255; 0 133 | Color Transformer: FlatColor 134 | Decay Time: 0 135 | Enabled: true 136 | Invert Rainbow: false 137 | Max Color: 255; 255; 255 138 | Min Color: 0; 0; 0 139 | Name: LaserScan 140 | Position Transformer: XYZ 141 | Queue Size: 10 142 | Selectable: true 143 | Size (Pixels): 3 144 | Size (m): 0.030000001192092896 145 | Style: Flat Squares 146 | Topic: /scan 147 | Unreliable: false 148 | Use Fixed Frame: true 149 | Use rainbow: true 150 | Value: true 151 | - Class: rviz/Image 152 | Enabled: false 153 | Image Topic: /raspicam_node/image 154 | Max Value: 1 155 | Median window: 5 156 | Min Value: 0 157 | Name: Image 158 | Normalize Range: true 159 | Queue Size: 2 160 | Transport Hint: compressed 161 | Unreliable: false 162 | Value: false 163 | - Alpha: 0.699999988079071 164 | Class: rviz/Map 165 | Color Scheme: map 166 | Draw Behind: false 167 | Enabled: true 168 | Name: Map 169 | Topic: /map 170 | Unreliable: false 171 | Use Timestamp: false 172 | Value: true 173 | - Alpha: 1 174 | Buffer Length: 1 175 | Class: rviz/Path 176 | Color: 0; 0; 0 177 | Enabled: true 178 | Head Diameter: 0.30000001192092896 179 | Head Length: 0.20000000298023224 180 | Length: 0.30000001192092896 181 | Line Style: Lines 182 | Line Width: 0.029999999329447746 183 | Name: Planner Plan 184 | Offset: 185 | X: 0 186 | Y: 0 187 | Z: 0 188 | Pose Color: 255; 85; 255 189 | Pose Style: None 190 | Queue Size: 10 191 | Radius: 0.029999999329447746 192 | Shaft Diameter: 0.10000000149011612 193 | Shaft Length: 0.10000000149011612 194 | Topic: /move_base/NavfnROS/plan 195 | Unreliable: false 196 | Value: true 197 | - Class: rviz/Group 198 | Displays: 199 | - Alpha: 0.699999988079071 200 | Class: rviz/Map 201 | Color Scheme: costmap 202 | Draw Behind: true 203 | Enabled: true 204 | Name: Costmap 205 | Topic: /move_base/global_costmap/costmap 206 | Unreliable: false 207 | Use Timestamp: false 208 | Value: true 209 | - Alpha: 1 210 | Buffer Length: 1 211 | Class: rviz/Path 212 | Color: 255; 0; 0 213 | Enabled: true 214 | Head Diameter: 0.30000001192092896 215 | Head Length: 0.20000000298023224 216 | Length: 0.30000001192092896 217 | Line Style: Lines 218 | Line Width: 0.029999999329447746 219 | Name: Planner 220 | Offset: 221 | X: 0 222 | Y: 0 223 | Z: 0 224 | Pose Color: 255; 85; 255 225 | Pose Style: None 226 | Queue Size: 10 227 | Radius: 0.029999999329447746 228 | Shaft Diameter: 0.10000000149011612 229 | Shaft Length: 0.10000000149011612 230 | Topic: /move_base/DWAPlannerROS/global_plan 231 | Unreliable: false 232 | Value: true 233 | Enabled: true 234 | Name: Global Map 235 | - Class: rviz/Group 236 | Displays: 237 | - Alpha: 1 238 | Class: rviz/Polygon 239 | Color: 0; 0; 0 240 | Enabled: true 241 | Name: Polygon 242 | Queue Size: 10 243 | Topic: /move_base/local_costmap/footprint 244 | Unreliable: false 245 | Value: true 246 | - Alpha: 0.699999988079071 247 | Class: rviz/Map 248 | Color Scheme: costmap 249 | Draw Behind: false 250 | Enabled: true 251 | Name: Costmap 252 | Topic: /move_base/local_costmap/costmap 253 | Unreliable: false 254 | Use Timestamp: false 255 | Value: true 256 | - Alpha: 1 257 | Buffer Length: 1 258 | Class: rviz/Path 259 | Color: 255; 255; 0 260 | Enabled: true 261 | Head Diameter: 0.30000001192092896 262 | Head Length: 0.20000000298023224 263 | Length: 0.30000001192092896 264 | Line Style: Lines 265 | Line Width: 0.029999999329447746 266 | Name: Planner 267 | Offset: 268 | X: 0 269 | Y: 0 270 | Z: 0 271 | Pose Color: 255; 85; 255 272 | Pose Style: None 273 | Queue Size: 10 274 | Radius: 0.029999999329447746 275 | Shaft Diameter: 0.10000000149011612 276 | Shaft Length: 0.10000000149011612 277 | Topic: /move_base/DWAPlannerROS/local_plan 278 | Unreliable: false 279 | Value: true 280 | Enabled: true 281 | Name: Local Map 282 | - Alpha: 1 283 | Arrow Length: 0.05000000074505806 284 | Axes Length: 0.30000001192092896 285 | Axes Radius: 0.009999999776482582 286 | Class: rviz/PoseArray 287 | Color: 0; 192; 0 288 | Enabled: true 289 | Head Length: 0.07000000029802322 290 | Head Radius: 0.029999999329447746 291 | Name: Amcl Particles 292 | Queue Size: 10 293 | Shaft Length: 0.23000000417232513 294 | Shaft Radius: 0.009999999776482582 295 | Shape: Arrow (Flat) 296 | Topic: /particlecloud 297 | Unreliable: false 298 | Value: true 299 | - Alpha: 1 300 | Axes Length: 1 301 | Axes Radius: 0.10000000149011612 302 | Class: rviz/Pose 303 | Color: 255; 25; 0 304 | Enabled: true 305 | Head Length: 0.30000001192092896 306 | Head Radius: 0.10000000149011612 307 | Name: Goal 308 | Queue Size: 10 309 | Shaft Length: 0.5 310 | Shaft Radius: 0.05000000074505806 311 | Shape: Arrow 312 | Topic: /move_base_simple/goal 313 | Unreliable: false 314 | Value: true 315 | Enabled: true 316 | Global Options: 317 | Background Color: 48; 48; 48 318 | Default Light: true 319 | Fixed Frame: map 320 | Frame Rate: 30 321 | Name: root 322 | Tools: 323 | - Class: rviz/MoveCamera 324 | - Class: rviz/Interact 325 | Hide Inactive Objects: true 326 | - Class: rviz/Select 327 | - Class: rviz/SetInitialPose 328 | Theta std deviation: 0.2617993950843811 329 | Topic: /initialpose 330 | X std deviation: 0.5 331 | Y std deviation: 0.5 332 | - Class: rviz/SetGoal 333 | Topic: /move_base_simple/goal 334 | - Class: rviz/Measure 335 | Value: true 336 | Views: 337 | Current: 338 | Angle: 0 339 | Class: rviz/TopDownOrtho 340 | Enable Stereo Rendering: 341 | Stereo Eye Separation: 0.05999999865889549 342 | Stereo Focal Distance: 1 343 | Swap Stereo Eyes: false 344 | Value: false 345 | Invert Z Axis: false 346 | Name: Current View 347 | Near Clip Distance: 0.009999999776482582 348 | Scale: 155.15501403808594 349 | Target Frame: 350 | X: 0 351 | Y: 0 352 | Saved: ~ 353 | Window Geometry: 354 | Displays: 355 | collapsed: true 356 | Height: 1016 357 | Hide Left Dock: true 358 | Hide Right Dock: true 359 | Image: 360 | collapsed: false 361 | QMainWindow State: 000000ff00000000fd00000004000000000000016a0000039efc0200000007fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073000000003d0000039e000000c900fffffffb0000000a0049006d0061006700650000000317000000cc0000001600fffffffb0000000a0049006d0061006700650000000330000000ce0000000000000000000000010000010f0000039efc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000003d0000039e000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004a00000003efc0100000002fb0000000800540069006d00650000000000000004a00000041800fffffffb0000000800540069006d00650100000000000004500000000000000000000003f60000039e00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 362 | Selection: 363 | collapsed: false 364 | Time: 365 | collapsed: false 366 | Tool Properties: 367 | collapsed: false 368 | Views: 369 | collapsed: true 370 | Width: 1014 371 | X: 64 372 | Y: 27 373 | -------------------------------------------------------------------------------- /rviz/particle_filter.rviz: -------------------------------------------------------------------------------- 1 | Panels: 2 | - Class: rviz/Displays 3 | Help Height: 78 4 | Name: Displays 5 | Property Tree Widget: 6 | Expanded: 7 | - /Odometry1/Shape1 8 | Splitter Ratio: 0.5 9 | Tree Height: 714 10 | - Class: rviz/Selection 11 | Name: Selection 12 | - Class: rviz/Tool Properties 13 | Expanded: 14 | - /2D Pose Estimate1 15 | - /2D Nav Goal1 16 | - /Publish Point1 17 | Name: Tool Properties 18 | Splitter Ratio: 0.5886790156364441 19 | - Class: rviz/Views 20 | Expanded: 21 | - /Current View1 22 | Name: Views 23 | Splitter Ratio: 0.5 24 | - Class: rviz/Time 25 | Name: Time 26 | SyncMode: 0 27 | SyncSource: LaserScan 28 | Preferences: 29 | PromptSaveOnExit: true 30 | Toolbars: 31 | toolButtonStyle: 2 32 | Visualization Manager: 33 | Class: "" 34 | Displays: 35 | - Alpha: 0.5 36 | Cell Size: 1 37 | Class: rviz/Grid 38 | Color: 160; 160; 164 39 | Enabled: true 40 | Line Style: 41 | Line Width: 0.029999999329447746 42 | Value: Lines 43 | Name: Grid 44 | Normal Cell Count: 0 45 | Offset: 46 | X: 0 47 | Y: 0 48 | Z: 0 49 | Plane: XY 50 | Plane Cell Count: 10 51 | Reference Frame: 52 | Value: true 53 | - Alpha: 0.699999988079071 54 | Class: rviz/Map 55 | Color Scheme: map 56 | Draw Behind: false 57 | Enabled: true 58 | Name: Map 59 | Topic: /map 60 | Unreliable: false 61 | Use Timestamp: false 62 | Value: true 63 | - Alpha: 1 64 | Class: rviz/RobotModel 65 | Collision Enabled: false 66 | Enabled: true 67 | Links: 68 | All Links Enabled: true 69 | Expand Joint Details: false 70 | Expand Link Details: false 71 | Expand Tree: false 72 | Link Tree Style: Links in Alphabetic Order 73 | base_footprint: 74 | Alpha: 1 75 | Show Axes: false 76 | Show Trail: false 77 | base_link: 78 | Alpha: 1 79 | Show Axes: false 80 | Show Trail: false 81 | Value: true 82 | base_scan: 83 | Alpha: 1 84 | Show Axes: false 85 | Show Trail: false 86 | Value: true 87 | caster_back_link: 88 | Alpha: 1 89 | Show Axes: false 90 | Show Trail: false 91 | Value: true 92 | imu_link: 93 | Alpha: 1 94 | Show Axes: false 95 | Show Trail: false 96 | wheel_left_link: 97 | Alpha: 1 98 | Show Axes: false 99 | Show Trail: false 100 | Value: true 101 | wheel_right_link: 102 | Alpha: 1 103 | Show Axes: false 104 | Show Trail: false 105 | Value: true 106 | Name: RobotModel 107 | Robot Description: robot_description 108 | TF Prefix: "" 109 | Update Interval: 0 110 | Value: true 111 | Visual Enabled: true 112 | - Alpha: 0.699999988079071 113 | Autocompute Intensity Bounds: true 114 | Autocompute Value Bounds: 115 | Max Value: 10 116 | Min Value: -10 117 | Value: true 118 | Axis: Z 119 | Channel Name: intensity 120 | Class: rviz/LaserScan 121 | Color: 255; 255; 255 122 | Color Transformer: Intensity 123 | Decay Time: 0 124 | Enabled: false 125 | Invert Rainbow: false 126 | Max Color: 255; 255; 255 127 | Min Color: 0; 150; 255 128 | Name: LaserScan 129 | Position Transformer: XYZ 130 | Queue Size: 10 131 | Selectable: true 132 | Size (Pixels): 3 133 | Size (m): 0.009999999776482582 134 | Style: Points 135 | Topic: /scan 136 | Unreliable: false 137 | Use Fixed Frame: true 138 | Use rainbow: false 139 | Value: false 140 | - Alpha: 1 141 | Class: rviz_plugin_tutorials/Imu 142 | Color: 204; 51; 204 143 | Enabled: false 144 | History Length: 1 145 | Name: Imu 146 | Queue Size: 10 147 | Topic: /imu 148 | Unreliable: false 149 | Value: false 150 | - Angle Tolerance: 0.0010000000474974513 151 | Class: rviz/Odometry 152 | Covariance: 153 | Orientation: 154 | Alpha: 0.5 155 | Color: 255; 255; 127 156 | Color Style: Unique 157 | Frame: Local 158 | Offset: 1 159 | Scale: 1 160 | Value: true 161 | Position: 162 | Alpha: 0.30000001192092896 163 | Color: 204; 51; 204 164 | Scale: 1 165 | Value: false 166 | Value: false 167 | Enabled: true 168 | Keep: 1 169 | Name: Odometry 170 | Position Tolerance: 0.0010000000474974513 171 | Queue Size: 10 172 | Shape: 173 | Alpha: 0.699999988079071 174 | Axes Length: 1 175 | Axes Radius: 0.10000000149011612 176 | Color: 0; 150; 255 177 | Head Length: 0.10000000149011612 178 | Head Radius: 0.07500000298023224 179 | Shaft Length: 0.20000000298023224 180 | Shaft Radius: 0.019999999552965164 181 | Value: Arrow 182 | Topic: /odom 183 | Unreliable: false 184 | Value: true 185 | - Alpha: 1 186 | Arrow Length: 0.30000001192092896 187 | Axes Length: 0.20000000298023224 188 | Axes Radius: 0.009999999776482582 189 | Class: rviz/PoseArray 190 | Color: 255; 25; 0 191 | Enabled: false 192 | Head Length: 0.03999999910593033 193 | Head Radius: 0.029999999329447746 194 | Name: PoseArray 195 | Queue Size: 1000 196 | Shaft Length: 0.10000000149011612 197 | Shaft Radius: 0.009999999776482582 198 | Shape: Axes 199 | Topic: /particle_cloud_Origin 200 | Unreliable: false 201 | Value: false 202 | - Class: rviz/TF 203 | Enabled: false 204 | Frame Timeout: 15 205 | Frames: 206 | All Enabled: true 207 | Marker Alpha: 1 208 | Marker Scale: 0.5 209 | Name: TF 210 | Show Arrows: true 211 | Show Axes: true 212 | Show Names: true 213 | Tree: 214 | {} 215 | Update Interval: 0 216 | Value: false 217 | - Alpha: 1 218 | Arrow Length: 0.30000001192092896 219 | Axes Length: 0.30000001192092896 220 | Axes Radius: 0.009999999776482582 221 | Class: rviz/PoseArray 222 | Color: 255; 25; 0 223 | Enabled: true 224 | Head Length: 0.05000000074505806 225 | Head Radius: 0.029999999329447746 226 | Name: PoseArray 227 | Queue Size: 10 228 | Shaft Length: 0.10000000149011612 229 | Shaft Radius: 0.009999999776482582 230 | Shape: Arrow (3D) 231 | Topic: /particle_cloud_PoseArray 232 | Unreliable: false 233 | Value: true 234 | - Alpha: 0.699999988079071 235 | Autocompute Intensity Bounds: true 236 | Autocompute Value Bounds: 237 | Max Value: 10 238 | Min Value: -10 239 | Value: true 240 | Axis: Z 241 | Channel Name: intensity 242 | Class: rviz/LaserScan 243 | Color: 255; 255; 255 244 | Color Transformer: Intensity 245 | Decay Time: 0 246 | Enabled: true 247 | Invert Rainbow: false 248 | Max Color: 255; 255; 255 249 | Min Color: 0; 255; 0 250 | Name: LaserScan 251 | Position Transformer: XYZ 252 | Queue Size: 10 253 | Selectable: true 254 | Size (Pixels): 3 255 | Size (m): 0.20000000298023224 256 | Style: Points 257 | Topic: /particle_cloud_LaserScan 258 | Unreliable: false 259 | Use Fixed Frame: true 260 | Use rainbow: false 261 | Value: true 262 | Enabled: true 263 | Global Options: 264 | Background Color: 48; 48; 48 265 | Default Light: true 266 | Fixed Frame: map 267 | Frame Rate: 30 268 | Name: root 269 | Tools: 270 | - Class: rviz/Interact 271 | Hide Inactive Objects: true 272 | - Class: rviz/MoveCamera 273 | - Class: rviz/Select 274 | - Class: rviz/FocusCamera 275 | - Class: rviz/Measure 276 | - Class: rviz/SetInitialPose 277 | Theta std deviation: 0.2617993950843811 278 | Topic: /initialpose 279 | X std deviation: 0.5 280 | Y std deviation: 0.5 281 | - Class: rviz/SetGoal 282 | Topic: /move_base_simple/goal 283 | - Class: rviz/PublishPoint 284 | Single click: true 285 | Topic: /clicked_point 286 | Value: true 287 | Views: 288 | Current: 289 | Class: rviz/Orbit 290 | Distance: 6.004093170166016 291 | Enable Stereo Rendering: 292 | Stereo Eye Separation: 0.05999999865889549 293 | Stereo Focal Distance: 1 294 | Swap Stereo Eyes: false 295 | Value: false 296 | Field of View: 0.7853981852531433 297 | Focal Point: 298 | X: 0.1180887222290039 299 | Y: 0.008469339460134506 300 | Z: 0.00037526083178818226 301 | Focal Shape Fixed Size: true 302 | Focal Shape Size: 0.05000000074505806 303 | Invert Z Axis: false 304 | Name: Current View 305 | Near Clip Distance: 0.009999999776482582 306 | Pitch: 1.5697963237762451 307 | Target Frame: 308 | Yaw: 4.7131853103637695 309 | Saved: ~ 310 | Window Geometry: 311 | Displays: 312 | collapsed: true 313 | Height: 1011 314 | Hide Left Dock: true 315 | Hide Right Dock: true 316 | QMainWindow State: 000000ff00000000fd00000004000000000000015600000355fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073000000003d00000355000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f00000355fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000003d00000355000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004180000003efc0100000002fb0000000800540069006d0065010000000000000418000003bc00fffffffb0000000800540069006d00650100000000000004500000000000000000000004180000035500000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 317 | Selection: 318 | collapsed: false 319 | Time: 320 | collapsed: false 321 | Tool Properties: 322 | collapsed: false 323 | Views: 324 | collapsed: true 325 | Width: 1048 326 | X: 64 327 | Y: 27 328 | -------------------------------------------------------------------------------- /src/dataViz.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import rospy 4 | from sensor_msgs.msg import JointState 5 | from tf2_msgs.msg import TFMessage 6 | from rosgraph_msgs.msg import Clock 7 | from geometry_msgs.msg import Twist 8 | from gazebo_msgs.msg import LinkStates 9 | from gazebo_msgs.msg import ModelStates 10 | from dynamic_reconfigure.msg import ConfigDescription 11 | from dynamic_reconfigure.msg import Config 12 | from gazebo_msgs.msg import PerformanceMetrics 13 | from gazebo_msgs.msg import LinkState 14 | from gazebo_msgs.msg import ModelState 15 | from sensor_msgs.msg import Imu 16 | from nav_msgs.msg import Odometry 17 | from rosgraph_msgs.msg import Log 18 | from sensor_msgs.msg import LaserScan 19 | 20 | 21 | def callback(data): 22 | pass 23 | 24 | 25 | 26 | if __name__ == '__main__': 27 | 28 | # -------------------------------------------------------------------# 29 | 30 | rospy.init_node("dummy_node") 31 | rospy.Subscriber("/clock", Clock, callback) 32 | rospy.Subscriber("/cmd_vel", Twist, callback) 33 | rospy.Subscriber("/imu", Imu, callback) 34 | rospy.Subscriber("/joint_states", JointState, callback) 35 | rospy.Subscriber("/odom", Odometry, callback) 36 | rospy.Subscriber("/rosout", Log, callback) 37 | rospy.Subscriber("/rosout_agg", Log, callback) 38 | rospy.Subscriber("/scan", LaserScan, callback) 39 | rospy.Subscriber("/tf", TFMessage, callback) 40 | 41 | jointState = JointState() 42 | tranforms = TFMessage() 43 | 44 | rate = rospy.Rate(50) 45 | 46 | # -------------------------------------------------------------------# 47 | 48 | while not rospy.is_shutdown(): 49 | pass 50 | 51 | 52 | # -------------------------------------------------------------------# 53 | 54 | rospy.spin() 55 | -------------------------------------------------------------------------------- /src/initialPose.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import rospy 4 | from tf2_msgs.msg import TFMessage 5 | from geometry_msgs.msg import PoseWithCovarianceStamped 6 | from nav_msgs.msg import Odometry 7 | 8 | if __name__ == '__main__': 9 | 10 | # -------------------------------------------------------------------# 11 | 12 | rospy.init_node("initialPose") 13 | initialPose_pub = rospy.Publisher("/initialpose", PoseWithCovarianceStamped, queue_size=1) 14 | 15 | robotPose = Odometry() 16 | initialPose = PoseWithCovarianceStamped() 17 | 18 | robotPose = rospy.wait_for_message('/odom', Odometry) 19 | 20 | initialPose.pose.pose = robotPose.pose.pose 21 | initialPose.header.frame_id = "map" 22 | # How much error is present in my pose estimation 23 | initialPose.pose.covariance = [0.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 24 | 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 25 | 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] 26 | 27 | rospy.sleep(1) 28 | initialPose_pub.publish(initialPose) -------------------------------------------------------------------------------- /src/localizer.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import rospy 4 | from geometry_msgs.msg import PoseArray, Pose 5 | from nav_msgs.msg import Odometry 6 | from tf.transformations import quaternion_from_euler, euler_from_quaternion 7 | from sensor_msgs.msg import LaserScan 8 | 9 | import random as rn 10 | import math 11 | 12 | 13 | def odom_callback(botPose): 14 | global robotPose 15 | robotPose = botPose 16 | 17 | # def scan_callback(botLaserScan): 18 | # global robotLaserScan 19 | # robotLaserScan = botLaserScan 20 | 21 | if __name__ == '__main__': 22 | # --------------------------------- SETUP ------------------------------------------# 23 | 24 | particle_count = 2000 25 | robotPose = Odometry() 26 | # robotLaserScan = LaserScan() 27 | i = 0 28 | 29 | rospy.init_node("localizer_node") 30 | localizer_pub_PoseArray = rospy.Publisher("particle_cloud_PoseArray", PoseArray, queue_size=1) 31 | localizer_pub_Origin = rospy.Publisher("particle_cloud_Origin", PoseArray, queue_size=1) 32 | # localizer_pub_LaserScan = rospy.Publisher("particle_cloud_LaserScan", LaserScan, queue_size=1) 33 | rospy.Subscriber("/odom", Odometry, odom_callback) 34 | # rospy.Subscriber("/scan", LaserScan, scan_callback) 35 | 36 | particle_cloud_PoseArray = PoseArray() 37 | particle_cloud_PoseArray.header.frame_id = 'map' 38 | 39 | particle_cloud_Origin = PoseArray() 40 | particle_cloud_Origin.header.frame_id = 'map' 41 | 42 | # particle_cloud_LaserScan = LaserScan() 43 | # particle_cloud_LaserScan.header.frame_id = "base_scan" 44 | # particle_cloud_LaserScan.angle_min = 0.0 45 | # particle_cloud_LaserScan.angle_max = 6.28 46 | # particle_cloud_LaserScan.angle_increment = 0.0175 47 | # particle_cloud_LaserScan.range_min = 0.12 48 | # particle_cloud_LaserScan.range_max = 7.0 49 | # custom_intensities = [] 50 | # custom_ranges = [] 51 | # for i in range(359): 52 | # custom_ranges.append(0) 53 | # particle_cloud_LaserScan.ranges = custom_ranges 54 | # for i in range(359): 55 | # custom_intensities.append(0) 56 | # particle_cloud_LaserScan.intensities = custom_intensities 57 | 58 | for i in range(particle_count): 59 | p = Pose() 60 | 61 | p.position.x = rn.randrange(-222, 222, 1) / 100 62 | p.position.y = rn.randrange(-222, 222, 1) / 100 63 | # p.position.x = 0.5 64 | # p.position.y = 1 65 | p.position.z = 0 66 | 67 | roll = 0 68 | pitch = 0 69 | yaw = rn.randrange(-314, 314, 1)/100 70 | # yaw = 1.57 71 | 72 | q = quaternion_from_euler(roll, pitch, yaw) 73 | p.orientation.x = q[0] 74 | p.orientation.y = q[1] 75 | p.orientation.z = q[2] 76 | p.orientation.w = q[3] 77 | 78 | particle_cloud_Origin.poses.append(p) 79 | particle_cloud_PoseArray.poses.append(p) 80 | 81 | 82 | rate = rospy.Rate(20) 83 | rospy.sleep(1) 84 | 85 | # --------------------------------- LOOP -------------------------------------------# 86 | while not rospy.is_shutdown(): 87 | for i in range(0, particle_count): 88 | pfp = Pose() # particle final pose 89 | 90 | # robot pose 91 | xr = robotPose.pose.pose.position.x 92 | yr = robotPose.pose.pose.position.y 93 | (rollr, pitchr, yawr) = euler_from_quaternion([robotPose.pose.pose.orientation.x, robotPose.pose.pose.orientation.y, robotPose.pose.pose.orientation.z, robotPose.pose.pose.orientation.w]) 94 | 95 | # origin pose 96 | xp = particle_cloud_Origin.poses[i].position.x 97 | yp = particle_cloud_Origin.poses[i].position.y 98 | (rollo, pitcho, yawo) = euler_from_quaternion([particle_cloud_Origin.poses[i].orientation.x, particle_cloud_Origin.poses[i].orientation.y, particle_cloud_Origin.poses[i].orientation.z, particle_cloud_Origin.poses[i].orientation.w]) 99 | 100 | # rotational transformation 101 | xn = xr * math.cos(yawo) - yr * math.sin(yawo) 102 | yn = xr * math.sin(yawo) + yr * math.cos(yawo) 103 | 104 | pfp.position.x = xp + xn 105 | pfp.position.y = yp + yn 106 | 107 | q = quaternion_from_euler(0, 0, yawr + yawo) 108 | pfp.orientation.x = q[0] 109 | pfp.orientation.y = q[1] 110 | pfp.orientation.z = q[2] 111 | pfp.orientation.w = q[3] 112 | 113 | particle_cloud_PoseArray.poses[i] = pfp 114 | 115 | # LaserScan updation 116 | # for i in range(0, 359): 117 | # particle_cloud_LaserScan.ranges[i] = robotLaserScan.ranges[i] 118 | 119 | localizer_pub_Origin.publish(particle_cloud_Origin) 120 | localizer_pub_PoseArray.publish(particle_cloud_PoseArray) 121 | # localizer_pub_LaserScan.publish(particle_cloud_LaserScan) 122 | 123 | # ----------------------------------------------------------------------------------# 124 | 125 | rospy.spin() 126 | -------------------------------------------------------------------------------- /src/traverse.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import rospy 4 | from sensor_msgs.msg import LaserScan 5 | from nav_msgs.msg import Odometry 6 | from geometry_msgs.msg import Twist 7 | 8 | import tf 9 | from statistics import mean 10 | 11 | object_dist = 0 12 | obstacle_threshold = 0.4 13 | turn_threshold = 1 14 | raw_ld_data = 0 15 | 16 | yaw = 0 17 | 18 | def lidar_callback(ld_data): 19 | global raw_ld_data 20 | raw_ld_data = ld_data.ranges 21 | 22 | def odom_callback(odom_data): 23 | global yaw 24 | (r, p, y) = tf.transformations.euler_from_quaternion( 25 | [odom_data.pose.pose.orientation.x, odom_data.pose.pose.orientation.y, odom_data.pose.pose.orientation.z, odom_data.pose.pose.orientation.w]) 26 | yaw = y 27 | 28 | if __name__ == '__main__': 29 | 30 | # -------------------------------------------------------------------# 31 | 32 | rospy.init_node("data_viz_node") 33 | 34 | lidar_topic = "/scan" 35 | rospy.Subscriber(lidar_topic, LaserScan, lidar_callback) 36 | 37 | odom_topic = "/odom" 38 | rospy.Subscriber(odom_topic, Odometry, odom_callback) 39 | 40 | cmdvel_topic = "/cmd_vel" 41 | pub = rospy.Publisher(cmdvel_topic, Twist, queue_size = 10) 42 | 43 | botVel = Twist() 44 | 45 | rate = rospy.Rate(50) 46 | 47 | rospy.sleep(1) 48 | botVel.linear.x = 0.15 49 | 50 | # -------------------------------------------------------------------# 51 | 52 | while not rospy.is_shutdown(): 53 | 54 | a = raw_ld_data[0:20] 55 | b = raw_ld_data[339:359] 56 | 57 | object_dist = round(min(a + b),2) 58 | 59 | print(max(raw_ld_data[0:180]), max(raw_ld_data[180:359]), botVel.angular.z) 60 | 61 | if object_dist < obstacle_threshold: 62 | botVel.linear.x = 0 63 | if max(raw_ld_data[0:180]) > max(raw_ld_data[180:359]): 64 | botVel.angular.z = 0.15 65 | else: 66 | botVel.angular.z = -0.15 67 | 68 | if object_dist > turn_threshold: 69 | botVel.linear.x = 0.15 70 | botVel.angular.z = 0 71 | 72 | pub.publish(botVel) 73 | rate.sleep() 74 | 75 | 76 | # -------------------------------------------------------------------# 77 | 78 | rospy.spin() 79 | -------------------------------------------------------------------------------- /urdf/common_properties.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 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 | -------------------------------------------------------------------------------- /urdf/turtlebot3_burger.gazebo.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Gazebo/DarkGrey 8 | 9 | 10 | 11 | 0.1 12 | 0.1 13 | 500000.0 14 | 10.0 15 | 0.001 16 | 0.1 17 | 1 0 0 18 | Gazebo/FlatBlack 19 | 20 | 21 | 22 | 0.1 23 | 0.1 24 | 500000.0 25 | 10.0 26 | 0.001 27 | 0.1 28 | 1 0 0 29 | Gazebo/FlatBlack 30 | 31 | 32 | 33 | 0.1 34 | 0.1 35 | 1000000.0 36 | 100.0 37 | 0.001 38 | 1.0 39 | Gazebo/FlatBlack 40 | 41 | 42 | 43 | 44 | true 45 | $(arg imu_visual) 46 | 47 | Gazebo/FlatBlack 48 | 49 | 50 | 51 | 52 | cmd_vel 53 | odom 54 | odom 55 | world 56 | true 57 | base_footprint 58 | false 59 | true 60 | true 61 | false 62 | 30 63 | wheel_left_joint 64 | wheel_right_joint 65 | 0.160 66 | 0.066 67 | 1 68 | 10 69 | na 70 | 71 | 72 | 73 | 74 | 75 | true 76 | imu_link 77 | imu_link 78 | imu 79 | imu_service 80 | 0.0 81 | 0 82 | 83 | 84 | gaussian 85 | 86 | 0.0 87 | 2e-4 88 | 0.0000075 89 | 0.0000008 90 | 91 | 92 | 0.0 93 | 1.7e-2 94 | 0.1 95 | 0.001 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | Gazebo/FlatBlack 104 | 105 | 0 0 0 0 0 0 106 | 107 | true 108 | 5 109 | 110 | 111 | 112 | 360 113 | 1 114 | 0.0 115 | 116 | 6.2831 117 | 118 | 119 | 120 | 0.120 121 | 7 122 | 0.015 123 | 124 | 125 | gaussian 126 | 0.0 127 | 0.01 128 | 129 | 130 | 131 | scan 132 | base_scan 133 | 134 | 135 | 136 | 137 | 138 | -------------------------------------------------------------------------------- /urdf/turtlebot3_burger.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 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 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 162 | 163 | 164 | 165 | 166 | -------------------------------------------------------------------------------- /world/obstacles.world: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 0 0 0 1 5 | 0 6 | 0.7 0.7 0.7 1 7 | 8 | 9 | 1 10 | 0 0 10 0 -0 0 11 | 0.8 0.8 0.8 1 12 | 0.2 0.2 0.2 1 13 | 14 | 1000 15 | 0.9 16 | 0.01 17 | 0.001 18 | 19 | -0.5 0.1 -0.9 20 | 21 | 0 22 | 0 23 | 0 24 | 25 | 26 | 27 | 1 28 | 29 | 30 | 31 | 32 | 0 0 1 33 | 100 100 34 | 35 | 36 | 37 | 38 | 39 | 100 40 | 50 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 10 52 | 53 | 54 | 0 55 | 56 | 57 | 0 0 1 58 | 100 100 59 | 60 | 61 | 62 | 66 | 67 | 68 | 0 69 | 0 70 | 0 71 | 72 | 73 | 74 | 1000 75 | 0.001 76 | 1 77 | 78 | 79 | quick 80 | 150 81 | 0 82 | 1.4 83 | 1 84 | 85 | 86 | 1e-05 87 | 0.2 88 | 2000 89 | 0.01 90 | 91 | 92 | 93 | 94 | 0 0 0 0 -0 1.57 95 | 96 | 97 | 98 | 99 | 5 0.15 0.5 100 | 101 | 102 | 0 0 0.25 0 -0 0 103 | 10 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 0 0 0.25 0 -0 0 119 | 120 | 121 | 5 0.15 0.5 122 | 123 | 124 | 125 | 129 | 1 1 1 1 130 | 131 | 132 | -2.425 0 0 0 -0 1.5708 133 | 0 134 | 0 135 | 0 136 | 137 | 138 | 139 | 140 | 141 | 1 0.15 0.5 142 | 143 | 144 | 0 0 0.25 0 -0 0 145 | 10 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 0 0 0.25 0 -0 0 161 | 162 | 163 | 1 0.15 0.5 164 | 165 | 166 | 167 | 171 | 1 1 1 1 172 | 173 | 174 | -1.937 -1.467 0 0 -0 0 175 | 0 176 | 0 177 | 0 178 | 179 | 180 | 181 | 182 | 183 | 1 0.15 0.5 184 | 185 | 186 | 0 0 0.25 0 -0 0 187 | 10 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 0 0 0.25 0 -0 0 203 | 204 | 205 | 1 0.15 0.5 206 | 207 | 208 | 209 | 213 | 1 1 1 1 214 | 215 | 216 | -0.22 -1.866 0 0 0 -1.5708 217 | 0 218 | 0 219 | 0 220 | 221 | 222 | 223 | 224 | 225 | 1 0.15 0.5 226 | 227 | 228 | 0 0 0.25 0 -0 0 229 | 10 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 0 0 0.25 0 -0 0 245 | 246 | 247 | 1 0.15 0.5 248 | 249 | 250 | 251 | 255 | 1 1 1 1 256 | 257 | 258 | 1.195 -1.002 0 0 -0 1.5708 259 | 0 260 | 0 261 | 0 262 | 263 | 264 | 265 | 266 | 267 | 1 0.15 0.5 268 | 269 | 270 | 0 0 0.25 0 -0 0 271 | 10 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 0 0 0.25 0 -0 0 287 | 288 | 289 | 1 0.15 0.5 290 | 291 | 292 | 293 | 297 | 1 1 1 1 298 | 299 | 300 | 1.288 1.93 0 0 0 -1.5708 301 | 0 302 | 0 303 | 0 304 | 305 | 306 | 307 | 308 | 309 | 1 0.15 0.5 310 | 311 | 312 | 0 0 0.25 0 -0 0 313 | 10 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 0 0 0.25 0 -0 0 329 | 330 | 331 | 1 0.15 0.5 332 | 333 | 334 | 335 | 339 | 1 1 1 1 340 | 341 | 342 | 1.91128 0.4632 0 0 -0 0 343 | 0 344 | 0 345 | 0 346 | 347 | 348 | 349 | 350 | 351 | 5 0.15 0.5 352 | 353 | 354 | 0 0 0.25 0 -0 0 355 | 10 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 0 0 0.25 0 -0 0 371 | 372 | 373 | 5 0.15 0.5 374 | 375 | 376 | 377 | 381 | 1 1 1 1 382 | 383 | 384 | 0 2.425 0 0 -0 0 385 | 0 386 | 0 387 | 0 388 | 389 | 390 | 391 | 392 | 393 | 1 0.15 0.5 394 | 395 | 396 | 0 0 0.25 0 -0 0 397 | 10 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 0 0 0.25 0 -0 0 413 | 414 | 415 | 1 0.15 0.5 416 | 417 | 418 | 419 | 423 | 1 1 1 1 424 | 425 | 426 | 0.204 0.215 0 0 0 -1.5708 427 | 0 428 | 0 429 | 0 430 | 431 | 432 | 433 | 434 | 435 | 5 0.15 0.5 436 | 437 | 438 | 0 0 0.25 0 -0 0 439 | 10 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 0 0 0.25 0 -0 0 455 | 456 | 457 | 5 0.15 0.5 458 | 459 | 460 | 461 | 465 | 1 1 1 1 466 | 467 | 468 | 2.425 0 0 0 0 -1.5708 469 | 0 470 | 0 471 | 0 472 | 473 | 474 | 475 | 476 | 477 | 5 0.15 0.5 478 | 479 | 480 | 0 0 0.25 0 -0 0 481 | 10 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 0 0 0.25 0 -0 0 497 | 498 | 499 | 5 0.15 0.5 500 | 501 | 502 | 503 | 507 | 1 1 1 1 508 | 509 | 510 | 0 -2.425 0 0 -0 3.14159 511 | 0 512 | 0 513 | 0 514 | 515 | 516 | 517 | 518 | 519 | 1 0.15 0.5 520 | 521 | 522 | 0 0 0.25 0 -0 0 523 | 10 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | 533 | 534 | 535 | 536 | 537 | 538 | 0 0 0.25 0 -0 0 539 | 540 | 541 | 1 0.15 0.5 542 | 543 | 544 | 545 | 549 | 1 1 1 1 550 | 551 | 552 | -1.064 1.548 0 0 -0 0 553 | 0 554 | 0 555 | 0 556 | 557 | 558 | 559 | 560 | 561 | 1 0.15 0.5 562 | 563 | 564 | 0 0 0.25 0 -0 0 565 | 10 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 0 0 0.25 0 -0 0 581 | 582 | 583 | 1 0.15 0.5 584 | 585 | 586 | 587 | 591 | 1 1 1 1 592 | 593 | 594 | -1.502 0.092 0 0 0 -1.5708 595 | 0 596 | 0 597 | 0 598 | 599 | 1 600 | 601 | 602 | 2 -2 0 0 -0 0 603 | 604 | 605 | 606 | 607 | 0.12 608 | 0.25 609 | 610 | 611 | 10 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 0.12 629 | 0.25 630 | 631 | 632 | 633 | 0 634 | 635 | 0 0 0 0 -0 0 636 | 637 | 1 638 | 0 639 | 0 640 | 1 641 | 0 642 | 1 643 | 644 | 1 645 | 646 | 0 647 | 0 648 | 649 | 650 | 651 | -2 2 0 0 -0 0 652 | 653 | 654 | 655 | 656 | 0.12 657 | 0.25 658 | 659 | 660 | 10 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | 0.12 678 | 0.25 679 | 680 | 681 | 682 | 0 683 | 684 | 0 0 0 0 -0 0 685 | 686 | 1 687 | 0 688 | 0 689 | 1 690 | 0 691 | 1 692 | 693 | 1 694 | 695 | 0 696 | 0 697 | 698 | 699 | 700 | 701 | 0.4 0.4 0.4 1 702 | 0.7 0.7 0.7 1 703 | 1 704 | 705 | 706 | 707 | 0 0 5 2.4e-05 1.57 1.57002 708 | orbit 709 | perspective 710 | 711 | 712 | 0 0 -9.8 713 | 6e-06 2.3e-05 -4.2e-05 714 | 715 | 716 | 717 | EARTH_WGS84 718 | 0 719 | 0 720 | 0 721 | 0 722 | 723 | 724 | 114 442000000 725 | 43 399583201 726 | 1688141827 111085159 727 | 41764 728 | 729 | 0 0 0 0 -0 0 730 | 1 1 1 731 | 732 | 0 0 0 0 -0 0 733 | 0 0 0 0 -0 0 734 | 0 0 0 0 -0 0 735 | 0 0 0 0 -0 0 736 | 737 | 738 | 739 | 2 -2 0.124991 0 -0 0 740 | 1 1 1 741 | 742 | 2 -2 0.124991 0 -0 0 743 | 0 0 0 0 -0 0 744 | 0 0 -9.8 0 -0 0 745 | 0 0 -9.8 0 -0 0 746 | 747 | 748 | 749 | -2 2 0.124991 0 -0 0 750 | 1 1 1 751 | 752 | -2 2 0.124991 0 -0 0 753 | 0 0 0 0 -0 0 754 | 0 0 -9.8 0 -0 0 755 | 0 0 -9.8 0 -0 0 756 | 757 | 758 | 759 | 0 -1e-06 0 0 -0 1.57 760 | 1 1 1 761 | 762 | -0.001931 -2.425 0 0 -0 3.1408 763 | 0 0 0 0 -0 0 764 | 0 0 0 0 -0 0 765 | 0 0 0 0 -0 0 766 | 767 | 768 | 1.46546 -1.93817 0 0 -0 1.57 769 | 0 0 0 0 -0 0 770 | 0 0 0 0 -0 0 771 | 0 0 0 0 -0 0 772 | 773 | 774 | 1.86582 -0.221486 0 0 0 -0.0008 775 | 0 0 0 0 -0 0 776 | 0 0 0 0 -0 0 777 | 0 0 0 0 -0 0 778 | 779 | 780 | 1.00295 1.1942 0 0 -0 3.1408 781 | 0 0 0 0 -0 0 782 | 0 0 0 0 -0 0 783 | 0 0 0 0 -0 0 784 | 785 | 786 | -1.92897 1.28954 0 0 0 -0.0008 787 | 0 0 0 0 -0 0 788 | 0 0 0 0 -0 0 789 | 0 0 0 0 -0 0 790 | 791 | 792 | -0.461678 1.91165 0 0 -0 1.57 793 | 0 0 0 0 -0 0 794 | 0 0 0 0 -0 0 795 | 0 0 0 0 -0 0 796 | 797 | 798 | -2.425 0.001931 0 0 -0 1.57 799 | 0 0 0 0 -0 0 800 | 0 0 0 0 -0 0 801 | 0 0 0 0 -0 0 802 | 803 | 804 | -0.214837 0.204171 0 0 0 -0.0008 805 | 0 0 0 0 -0 0 806 | 0 0 0 0 -0 0 807 | 0 0 0 0 -0 0 808 | 809 | 810 | 0.001931 2.425 0 0 0 -0.0008 811 | 0 0 0 0 -0 0 812 | 0 0 0 0 -0 0 813 | 0 0 0 0 -0 0 814 | 815 | 816 | 2.425 -0.001931 0 0 -0 -1.5716 817 | 0 0 0 0 -0 0 818 | 0 0 0 0 -0 0 819 | 0 0 0 0 -0 0 820 | 821 | 822 | -1.54885 -1.06277 0 0 -0 1.57 823 | 0 0 0 0 -0 0 824 | 0 0 0 0 -0 0 825 | 0 0 0 0 -0 0 826 | 827 | 828 | -0.093196 -1.50193 0 0 0 -0.0008 829 | 0 0 0 0 -0 0 830 | 0 0 0 0 -0 0 831 | 0 0 0 0 -0 0 832 | 833 | 834 | 835 | 0 0 10 0 -0 0 836 | 837 | 838 | 839 | 840 | --------------------------------------------------------------------------------