├── LICENSE ├── README.md ├── autostart.sh ├── volta_base ├── CHANGELOG.rst ├── CMakeLists.txt ├── LICENSE ├── config │ ├── rplidarA2.yaml │ └── scan.yaml ├── launch │ ├── bringup.launch │ └── sensors.launch └── package.xml ├── volta_control ├── CHANGELOG.rst ├── CMakeLists.txt ├── LICENSE ├── config │ ├── control.yaml │ └── twist_mux.yaml ├── launch │ └── control.launch └── package.xml ├── volta_description ├── CHANGELOG.rst ├── CMakeLists.txt ├── LICENSE ├── launch │ └── description.launch ├── meshes │ ├── astra.dae │ ├── d435i.dae │ ├── hokuyo.dae │ ├── logo.png │ ├── rplidar.dae │ ├── volta.dae │ └── volta_logo.dae ├── package.xml ├── rviz_params │ └── urdf.rviz └── urdf │ ├── accessories │ ├── camera_volta.urdf.xacro │ ├── imu_volta.urdf.xacro │ └── lidar_volta.urdf.xacro │ ├── components │ ├── caster_volta.urdf.xacro │ └── wheel_volta.urdf.xacro │ ├── volta.urdf.xacro │ ├── volta.xacro │ └── volta_properties.xacro ├── volta_localization ├── CHANGELOG.rst ├── CMakeLists.txt ├── LICENSE ├── config │ └── localization.yaml ├── launch │ └── localization.launch └── package.xml ├── volta_msgs ├── CHANGELOG.rst ├── CMakeLists.txt ├── LICENSE ├── msg │ ├── BMS.msg │ ├── Diagnostics.msg │ ├── RPM.msg │ └── Table.msg └── package.xml ├── volta_navigation ├── CHANGELOG.rst ├── CMakeLists.txt ├── LICENSE ├── config │ ├── amcl.yaml │ ├── costmap.yaml │ ├── costmap_global.yaml │ ├── costmap_local.yaml │ ├── global_planner.yaml │ ├── gmapping.yaml │ └── local_planner.yaml ├── launch │ └── navigation.launch ├── maps │ ├── gazebo.pgm │ └── gazebo.yaml ├── package.xml └── rviz_config │ └── navigation.rviz ├── volta_rules ├── CHANGELOG.rst ├── CMakeLists.txt ├── LICENSE ├── README.md ├── create_udev_rules ├── package.xml ├── sensor_read.py └── udev_rules.rules └── volta_teleoperator ├── CHANGELOG.rst ├── CMakeLists.txt ├── LICENSE ├── config └── joy.yaml ├── include └── volta_teleoperator │ └── joy_teleop.h ├── launch └── teleoperator.launch ├── package.xml └── src ├── joy_teleop.cpp └── joy_teleop_node.cpp /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2021, Botsync Pte. Ltd. 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | * Redistributions of source code must retain the above copyright 7 | notice, this list of conditions and the following disclaimer. 8 | * Redistributions in binary form must reproduce the above copyright 9 | notice, this list of conditions and the following disclaimer in the 10 | documentation and/or other materials provided with the distribution. 11 | * Neither the name of the Botsync Pte. Ltd. nor the 12 | names of its contributors may be used to endorse or promote products 13 | derived from this software without specific prior written permission. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY 19 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Volta 2 | Version:1.1.0 3 | ROS packages used to to run volta with hardware 4 | 5 | * volta_base - Package contains files to connect to the robot and run the sensor driver. 6 | * volta_control - Control configuration required for ROS control. 7 | * volta_description - Volta Robot description (URDF files). 8 | * volta_localization - Sensor fusion of wheel odometry and IMU data using the robot localization package. 9 | * volta_msgs - contains ROS messages specific to volta such as the power board messages,..etc 10 | * volta_navigation - Contains files required for running gmapping, amcl and move_base ROS packages. 11 | * volta_teleoperation - Control the robot using keyboard or Joystick. 12 | * volta_rules - Contains rules that ensures the USB peripherals are binded correctly 13 | 14 | ## Steps to Launch Volta : 15 | 16 | ### 1. Mapping an environment with Volta 17 | * Launch the move_base node by running: 18 | ``` 19 | $ roslaunch volta_base bringup.launch 20 | ``` 21 | * Launch the sensors node by running: 22 | ``` 23 | $ roslaunch volta_base sensors.launch 24 | ``` 25 | * To perform the mapping, launch the navigation package by running 26 | ``` 27 | $ roslaunch volta_navigation navigation.launch gmapping:=true 28 | ``` 29 | * Launch the rviz visualization tool by running: 30 | ``` 31 | $ rosrun rviz rviz 32 | ``` 33 | You can then open the volta configured rviz environment by opening the volta rviz config file, located under volta_navigation->rviz_config->navigation.rviz, from the rviz tool 34 | 35 | * In order to control the robot, launch the teleoperation node by running: 36 | ``` 37 | $ roslaunch volta_teleoperator teleoperator.launch keyboard:=true 38 | ``` 39 | 40 | * Once the mapping of the entire environment is completed, the map can be saved by running: 41 | ``` 42 | $ rosrun map_server map_saver –f 43 | ``` 44 | 45 | ### 3. Navigation with Volta 46 | * Launch the move_base node by running: 47 | ``` 48 | $ roslaunch volta_base bringup.launch 49 | ``` 50 | * Launch the sensors node by running: 51 | ``` 52 | $ roslaunch volta_base bringup.launch 53 | ``` 54 | * To perform the Autonomous navigation, launch the navigation package by running 55 | ``` 56 | $ roslaunch volta_navigation navigation.launch 57 | ``` 58 | * Launch the rviz visualization tool by running: 59 | ``` 60 | $ rosrun rviz rviz 61 | ``` 62 | You can then open the volta configured rviz environment by opening the volta rviz config file, located under volta_navigation->rviz_config->navigation.rviz, from the rviz tool 63 | 64 | Use the 2D Nav Goal tool in the top toolbar to select a navigation goal in the visualizer. Ensure that the nav goal is given in a mapped section of the map 65 | -------------------------------------------------------------------------------- /autostart.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | rossetup=/opt/ros/melodic/setup.bash 3 | rossetup2=/home/volta/catkin_volta/devel/setup.bash 4 | launcher="roslaunch volta_base bringup.launch" 5 | pathfile=/home/volta 6 | pathfile2=/lib/systemd/system 7 | cat <$pathfile/volta_start.sh 8 | #!/bin/bash 9 | bash -c "source $rossetup && source $rossetup2 && $launcher" 10 | EOF 11 | 12 | sudo chmod u+x $pathfile/volta_start.sh 13 | 14 | cat <$pathfile2/volta_start.service 15 | [Unit] 16 | Description=Vehicle Auto Start 17 | After=multi-user.target 18 | 19 | [Service] 20 | Type=idle 21 | ExecStart=$pathfile/volta_start.sh 22 | 23 | [Install] 24 | WantedBy=multi-user.target 25 | EOF 26 | sudo chmod 644 $pathfile2/volta_start.service 27 | sudo systemctl daemon-reload 28 | sudo systemctl enable volta_start.service 29 | sudo systemctl start volta_start.service 30 | -------------------------------------------------------------------------------- /volta_base/CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2 | Changelog for package volta_base 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 | 5 | 1.1.1 (2021-03-22) 6 | ------------------ 7 | * Updated yaml config and launch files. 8 | * Merge branch 'kinetic-devel-r2-update' into melodic-devel 9 | * Merge branch 'melodic-devel' into kinetic-devel-r2-update 10 | * Merged volta_development. 11 | * Merged volta_development. 12 | * Added BSD-3 license 13 | * Changed the launch file names 14 | * updating volta base - melodic 15 | * Changed done repo to run on melodic 16 | * Contributors: Nikhil Venkatesh, Toship 17 | 18 | 1.1.0 (2020-11-19) 19 | ------------------ 20 | * First Release 21 | -------------------------------------------------------------------------------- /volta_base/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(volta_base) 3 | 4 | add_compile_options(-std=c++11) 5 | 6 | find_package(catkin REQUIRED COMPONENTS 7 | ) 8 | 9 | catkin_package() 10 | 11 | set_directory_properties(PROPERTIES COMPILE_OPTIONS "-std=c++11;") 12 | 13 | install( 14 | DIRECTORY launch config 15 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} 16 | ) 17 | -------------------------------------------------------------------------------- /volta_base/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2021, Botsync Pte. Ltd. 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | * Redistributions of source code must retain the above copyright 7 | notice, this list of conditions and the following disclaimer. 8 | * Redistributions in binary form must reproduce the above copyright 9 | notice, this list of conditions and the following disclaimer in the 10 | documentation and/or other materials provided with the distribution. 11 | * Neither the name of the Botsync Pte. Ltd. nor the 12 | names of its contributors may be used to endorse or promote products 13 | derived from this software without specific prior written permission. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY 19 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | -------------------------------------------------------------------------------- /volta_base/config/rplidarA2.yaml: -------------------------------------------------------------------------------- 1 | scan_filter_chain: 2 | - name: box 3 | type: laser_filters/LaserScanBoxFilter 4 | params: 5 | box_frame: base_link 6 | min_x: -0.28 7 | max_x: 0.15 8 | min_y: -0.4 9 | max_y: 0.4 10 | min_z: -1.0 11 | max_z: 1.0 12 | - name: range 13 | type: laser_filters/LaserScanRangeFilter 14 | params: 15 | use_message_range_limits: false 16 | lower_threshold: 0.15 17 | upper_threshold: 18.0 18 | upper_replacement_value: 40.0 19 | -------------------------------------------------------------------------------- /volta_base/config/scan.yaml: -------------------------------------------------------------------------------- 1 | scan_filter_chain: 2 | - name: laser_cutoff 3 | type: laser_filters/LaserScanAngularBoundsFilter 4 | params: 5 | lower_angle: -1.57 6 | upper_angle: 1.57 7 | -------------------------------------------------------------------------------- /volta_base/launch/bringup.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /volta_base/launch/sensors.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 | 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 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 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 | -------------------------------------------------------------------------------- /volta_base/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | volta_base 4 | 1.1.1 5 | The volta_base package 6 | 7 | 8 | Nikhil Venkatesh 9 | Mahendra L Seervi 10 | 11 | Nikhil Venkatesh 12 | Toship 13 | 14 | BSD-3-Clause 15 | catkin 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /volta_control/CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2 | Changelog for package volta_control 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 | 5 | 1.1.1 (2021-03-22) 6 | ------------------ 7 | * Updated yaml config and launch files. 8 | * Merge branch 'kinetic-devel-r2-update' into melodic-devel 9 | * Merge branch 'melodic-devel' into kinetic-devel-r2-update 10 | * Merged volta_development. 11 | * Merged volta_development. 12 | * Added BSD-3 license 13 | * Changed the launch file names 14 | * updating volta base - melodic 15 | * Changed done repo to run on melodic 16 | * Contributors: Nikhil Venkatesh, Toship 17 | 18 | 1.1.0 (2020-11-19) 19 | ------------------ 20 | * First Release 21 | -------------------------------------------------------------------------------- /volta_control/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(volta_control) 3 | 4 | find_package(catkin REQUIRED COMPONENTS 5 | controller_manager 6 | diff_drive_controller 7 | joint_state_controller 8 | twist_mux 9 | ) 10 | 11 | catkin_package( 12 | ) 13 | 14 | include_directories( 15 | ${catkin_INCLUDE_DIRS} 16 | ) 17 | 18 | install( 19 | DIRECTORY launch config 20 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} 21 | ) 22 | -------------------------------------------------------------------------------- /volta_control/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2021, Botsync Pte. Ltd. 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | * Redistributions of source code must retain the above copyright 7 | notice, this list of conditions and the following disclaimer. 8 | * Redistributions in binary form must reproduce the above copyright 9 | notice, this list of conditions and the following disclaimer in the 10 | documentation and/or other materials provided with the distribution. 11 | * Neither the name of the Botsync Pte. Ltd. nor the 12 | names of its contributors may be used to endorse or promote products 13 | derived from this software without specific prior written permission. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY 19 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | -------------------------------------------------------------------------------- /volta_control/config/control.yaml: -------------------------------------------------------------------------------- 1 | volta_joint_publisher: 2 | type: "joint_state_controller/JointStateController" 3 | publish_rate: 10 4 | 5 | volta_base_controller: 6 | type: "diff_drive_controller/DiffDriveController" 7 | left_wheel: ['left_wheel_joint'] 8 | right_wheel: ['right_wheel_joint'] 9 | publish_rate: 20 10 | pose_covariance_diagonal: [0.001, 0.001, 0.001, 0.001, 0.001, 0.03] 11 | twist_covariance_diagonal: [0.001, 0.001, 0.001, 0.001, 0.001, 0.03] 12 | cmd_vel_timeout: 1000.0 13 | base_frame_id: base_link 14 | enable_odom_tf: true 15 | estimate_velocity_from_position: false 16 | 17 | wheel_separation_multiplier: 1.0 18 | wheel_separation: 0.3208 19 | wheel_radius: 0.0425 20 | wheel_radius_multiplier : 1.016 21 | 22 | linear: 23 | x: 24 | has_velocity_limits : true 25 | max_velocity : 1.0 26 | has_acceleration_limits: true 27 | max_acceleration : 1.0 28 | angular: 29 | z: 30 | has_velocity_limits : true 31 | max_velocity : 1.0 32 | has_acceleration_limits: true 33 | max_acceleration : 1.5 34 | -------------------------------------------------------------------------------- /volta_control/config/twist_mux.yaml: -------------------------------------------------------------------------------- 1 | topics: 2 | - 3 | name : navigation 4 | topic : nav/cmd_vel 5 | timeout : 0.5 6 | priority: 50 7 | - 8 | name : joystick 9 | topic : joy/cmd_vel 10 | timeout : 0.5 11 | priority: 90 12 | - 13 | name : keyboard 14 | topic : keyboard/cmd_vel 15 | timeout : 0.5 16 | priority: 80 17 | - 18 | name : user 19 | topic : user/cmd_vel 20 | timeout : 0.5 21 | priority: 70 22 | locks: 23 | - 24 | name : estop 25 | topic : e_stop_status 26 | timeout : 0.0 27 | priority: 100 28 | -------------------------------------------------------------------------------- /volta_control/launch/control.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /volta_control/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | volta_control 4 | 1.1.1 5 | The volta_control package 6 | 7 | Nikhil Venkatesh 8 | Mahendra L Seervi 9 | 10 | Nikhil Venkatesh 11 | Toship 12 | 13 | BSD-3-Clause 14 | 15 | catkin 16 | controller_manager 17 | diff_drive_controller 18 | joint_state_controller 19 | twist_mux 20 | controller_manager 21 | diff_drive_controller 22 | joint_state_controller 23 | twist_mux 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /volta_description/CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2 | Changelog for package volta_description 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 | 5 | 1.1.1 (2021-03-22) 6 | ------------------ 7 | * Updated yaml config and launch files. 8 | * Merge branch 'kinetic-devel-r2-update' into melodic-devel 9 | * Merge branch 'melodic-devel' into kinetic-devel-r2-update 10 | * Merged volta_development. 11 | * Merged volta_development. 12 | * Added BSD-3 license 13 | * Changed the launch file names 14 | * updating volta base - melodic 15 | * Changed done repo to run on melodic 16 | * Contributors: Nikhil Venkatesh, Toship 17 | 18 | 1.1.0 (2020-11-19) 19 | ------------------ 20 | * First Release 21 | -------------------------------------------------------------------------------- /volta_description/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(volta_description) 3 | 4 | find_package(catkin REQUIRED COMPONENTS 5 | roscpp 6 | rospy 7 | std_msgs 8 | ) 9 | 10 | catkin_package( 11 | ) 12 | 13 | include_directories( 14 | ${catkin_INCLUDE_DIRS} 15 | ) 16 | 17 | install( 18 | DIRECTORY launch meshes rviz_params urdf 19 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} 20 | ) 21 | -------------------------------------------------------------------------------- /volta_description/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2021, Botsync Pte. Ltd. 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | * Redistributions of source code must retain the above copyright 7 | notice, this list of conditions and the following disclaimer. 8 | * Redistributions in binary form must reproduce the above copyright 9 | notice, this list of conditions and the following disclaimer in the 10 | documentation and/or other materials provided with the distribution. 11 | * Neither the name of the Botsync Pte. Ltd. nor the 12 | names of its contributors may be used to endorse or promote products 13 | derived from this software without specific prior written permission. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY 19 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | -------------------------------------------------------------------------------- /volta_description/launch/description.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /volta_description/meshes/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botsync/volta/123d46393578c26482e06a89a714c1db25b886d9/volta_description/meshes/logo.png -------------------------------------------------------------------------------- /volta_description/meshes/volta_logo.dae: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Blender User 6 | Blender 2.90.1 commit date:2020-09-23, commit time:06:43, hash:3e85bb34d0d7 7 | 8 | 2020-12-01T08:57:36 9 | 2020-12-01T08:57:36 10 | 11 | Z_UP 12 | 13 | 14 | 15 | 16 | 17 | 24 24 24 18 | 1 19 | 0 20 | 10e-5 21 | 22 | 23 | 24 | 25 | 4 26 | 0 27 | 1 28 | 1 29 | 1 30 | 1 31 | 1 32 | 0 33 | 0 34 | 0 35 | 24 36 | 100 37 | 45 38 | 0.15 39 | 0 40 | 1 41 | 2 42 | 0.04999995 43 | 40 44 | 1 45 | 3 46 | 512 47 | 3 48 | 1 49 | 0 50 | 1.832538 51 | 1 52 | 1 53 | 54 | 55 | 56 | 57 | 58 | 59 | 20 20 20 60 | 1 61 | 0 62 | 10e-5 63 | 64 | 65 | 66 | 67 | 4 68 | 0 69 | 1 70 | 1 71 | 1 72 | 1 73 | 1 74 | 0 75 | 0 76 | 0 77 | 20 78 | 100 79 | 45 80 | 0.15 81 | 0 82 | 1 83 | 2 84 | 0.04999995 85 | 40 86 | 1 87 | 3 88 | 512 89 | 3 90 | 1 91 | 0 92 | 2.397541 93 | 1 94 | 1 95 | 96 | 97 | 98 | 99 | 100 | 101 | 15.97554 19.42368 20 102 | 1 103 | 0 104 | 10e-5 105 | 106 | 107 | 108 | 109 | 4 110 | 0 111 | 1 112 | 1 113 | 0.7987768 114 | 0.971184 115 | 1 116 | 0 117 | 0 118 | 0 119 | 20 120 | 100 121 | 45 122 | 0.15 123 | 0 124 | 1 125 | 2 126 | 0.04999995 127 | 40 128 | 1 129 | 3 130 | 512 131 | 3 132 | 1 133 | 0 134 | 2.051028 135 | 1 136 | 1 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | logo 147 | 148 | 149 | 150 | 151 | logo-surface 152 | 153 | 154 | 155 | 156 | 157 | 0 0 0 1 158 | 159 | 160 | 161 | 162 | 163 | 1.45 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | logo.png 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 0.1665 0.1826 0.01299995 0.1665 0.1826 0.07299995 0.1665 0.1806 0.01299995 0.1665 0.1806 0.07299995 0.1065 0.1826 0.01299995 0.1065 0.1806 0.01299995 0.1065 0.1826 0.07299995 0.1065 0.1806 0.07299995 0.1665 -0.1806 0.01299995 0.1665 -0.1806 0.07299995 0.1665 -0.1826 0.01299995 0.1665 -0.1826 0.07299995 0.1065 -0.1806 0.01299995 0.1065 -0.1826 0.01299995 0.1065 -0.1806 0.07299995 0.1065 -0.1826 0.07299995 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 1 0 0 0 0 -1 -1 0 0 0 0 1 0 1 0 0 -1 0 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.9511383 0.04319971 0.9542634 0.9558529 0.03848505 0.0463249 0.03848505 0.0463249 0.9542634 0.9558529 0.04161024 0.9589778 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.03986251 0.04457706 0.04064589 0.9535254 0.04112827 0.04086679 0.9533043 0.9540078 0.9533043 0.9540078 0.04112827 0.04086679 0.9537869 0.04134941 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 |

0 0 0 1 0 1 2 0 2 2 0 3 1 0 4 3 0 5 4 1 6 0 1 7 5 1 8 5 1 9 0 1 10 2 1 11 6 2 12 4 2 13 7 2 14 7 2 15 4 2 16 5 2 17 1 3 18 6 3 19 3 3 20 3 3 21 6 3 22 7 3 23 4 4 24 6 4 25 0 4 26 0 4 27 6 4 28 1 4 29 7 5 30 5 5 31 3 5 32 3 5 33 5 5 34 2 5 35 8 0 36 9 0 37 10 0 38 10 0 39 9 0 40 11 0 41 12 1 42 8 1 43 13 1 44 13 1 45 8 1 46 10 1 47 14 2 48 12 2 49 15 2 50 15 2 51 12 2 52 13 2 53 9 3 54 14 3 55 11 3 56 11 3 57 14 3 58 15 3 59 12 4 60 14 4 61 8 4 62 8 4 63 14 4 64 9 4 65 15 5 66 13 5 67 11 5 68 11 5 69 13 5 70 10 5 71

220 |
221 |
222 |
223 |
224 | 225 | 226 | 238 | 239 | 0.2977199 0.4008563 0.8664163 2.974948 0.2116802 0.8572599 -0.469358 -1.826696 -0.930889 0.3231404 0.17037 0.6823441 0 0 0 1 240 | 241 | 242 | 243 | 0.4707973 -0.3098175 -0.8260527 -2.899424 -0.5767241 0.6004778 -0.5539096 -2.089051 0.6676372 0.7371837 0.1040241 0.3517166 0 0 0 1 244 | 245 | 246 | 247 | 0.9730037 -0.05420413 0.2243338 0.4402544 -0.2077197 0.2179359 0.9536018 4.05789 -0.1005795 -0.9744567 0.2007932 0.9311668 0 0 0 1 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 |
256 | -------------------------------------------------------------------------------- /volta_description/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | volta_description 4 | 1.1.1 5 | The volta_description package 6 | 7 | Nikhil Venkatesh 8 | Mahendra L Seervi 9 | 10 | Nikhil Venkatesh 11 | Toship 12 | 13 | BSD-3-Clause 14 | 15 | catkin 16 | roscpp 17 | rospy 18 | std_msgs 19 | roscpp 20 | rospy 21 | std_msgs 22 | roscpp 23 | rospy 24 | std_msgs 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /volta_description/rviz_params/urdf.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 | - /RobotModel1 10 | - /TF1 11 | Splitter Ratio: 0.5 12 | Tree Height: 772 13 | - Class: rviz/Selection 14 | Name: Selection 15 | - Class: rviz/Tool Properties 16 | Expanded: 17 | - /2D Pose Estimate1 18 | - /2D Nav Goal1 19 | - /Publish Point1 20 | Name: Tool Properties 21 | Splitter Ratio: 0.588679016 22 | - Class: rviz/Views 23 | Expanded: 24 | - /Current View1 25 | Name: Views 26 | Splitter Ratio: 0.5 27 | - Class: rviz/Time 28 | Experimental: false 29 | Name: Time 30 | SyncMode: 0 31 | SyncSource: "" 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.0299999993 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: 1 54 | Class: rviz/RobotModel 55 | Collision Enabled: false 56 | Enabled: true 57 | Links: 58 | All Links Enabled: true 59 | Expand Joint Details: false 60 | Expand Link Details: false 61 | Expand Tree: false 62 | Link Tree Style: Links in Alphabetic Order 63 | base_link: 64 | Alpha: 1 65 | Show Axes: false 66 | Show Trail: false 67 | Value: true 68 | footprint: 69 | Alpha: 1 70 | Show Axes: false 71 | Show Trail: false 72 | imu: 73 | Alpha: 1 74 | Show Axes: false 75 | Show Trail: false 76 | left_wheel: 77 | Alpha: 1 78 | Show Axes: false 79 | Show Trail: false 80 | Value: true 81 | lidar: 82 | Alpha: 1 83 | Show Axes: false 84 | Show Trail: false 85 | Value: true 86 | right_wheel: 87 | Alpha: 1 88 | Show Axes: false 89 | Show Trail: false 90 | Value: true 91 | Name: RobotModel 92 | Robot Description: robot_description 93 | TF Prefix: "" 94 | Update Interval: 0 95 | Value: true 96 | Visual Enabled: true 97 | - Class: rviz/TF 98 | Enabled: true 99 | Frame Timeout: 15 100 | Frames: 101 | All Enabled: true 102 | base_link: 103 | Value: true 104 | footprint: 105 | Value: true 106 | imu: 107 | Value: true 108 | left_wheel: 109 | Value: true 110 | lidar: 111 | Value: true 112 | odom: 113 | Value: true 114 | right_wheel: 115 | Value: true 116 | Marker Scale: 0.5 117 | Name: TF 118 | Show Arrows: true 119 | Show Axes: true 120 | Show Names: true 121 | Tree: 122 | odom: 123 | base_link: 124 | footprint: 125 | {} 126 | imu: 127 | {} 128 | left_wheel: 129 | {} 130 | lidar: 131 | {} 132 | right_wheel: 133 | {} 134 | Update Interval: 0 135 | Value: true 136 | Enabled: true 137 | Global Options: 138 | Background Color: 48; 48; 48 139 | Default Light: true 140 | Fixed Frame: base_link 141 | Frame Rate: 30 142 | Name: root 143 | Tools: 144 | - Class: rviz/Interact 145 | Hide Inactive Objects: true 146 | - Class: rviz/MoveCamera 147 | - Class: rviz/Select 148 | - Class: rviz/FocusCamera 149 | - Class: rviz/Measure 150 | - Class: rviz/SetInitialPose 151 | Topic: /initialpose 152 | - Class: rviz/SetGoal 153 | Topic: /move_base_simple/goal 154 | - Class: rviz/PublishPoint 155 | Single click: true 156 | Topic: /clicked_point 157 | Value: true 158 | Views: 159 | Current: 160 | Class: rviz/Orbit 161 | Distance: 3.31769466 162 | Enable Stereo Rendering: 163 | Stereo Eye Separation: 0.0599999987 164 | Stereo Focal Distance: 1 165 | Swap Stereo Eyes: false 166 | Value: false 167 | Focal Point: 168 | X: 0 169 | Y: 0 170 | Z: 0 171 | Focal Shape Fixed Size: true 172 | Focal Shape Size: 0.0500000007 173 | Invert Z Axis: false 174 | Name: Current View 175 | Near Clip Distance: 0.00999999978 176 | Pitch: 0.695397019 177 | Target Frame: 178 | Value: Orbit (rviz) 179 | Yaw: 0.513581991 180 | Saved: ~ 181 | Window Geometry: 182 | Displays: 183 | collapsed: false 184 | Height: 1059 185 | Hide Left Dock: false 186 | Hide Right Dock: false 187 | QMainWindow State: 000000ff00000000fd00000004000000000000016a00000393fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000006100fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000002800000393000000d700fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f00000393fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000002800000393000000ad00fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e100000197000000030000074700000044fc0100000002fb0000000800540069006d00650100000000000007470000030000fffffffb0000000800540069006d00650100000000000004500000000000000000000004c20000039300000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 188 | Selection: 189 | collapsed: false 190 | Time: 191 | collapsed: false 192 | Tool Properties: 193 | collapsed: false 194 | Views: 195 | collapsed: false 196 | Width: 1863 197 | X: 57 198 | Y: 21 199 | -------------------------------------------------------------------------------- /volta_description/urdf/accessories/camera_volta.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 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 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 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 | ${update_rate} 96 | 97 | 1.3962634 98 | 99 | 1080 100 | 720 101 | R8G8B8 102 | 103 | 104 | 0.02 105 | 300 106 | 107 | 108 | gaussian 109 | 0.0 110 | 0.007 111 | 112 | 113 | 114 | 115 | true 116 | ${update_rate} 117 | ${frame} 118 | ${topic} 119 | ${info_topic} 120 | ${frame} 121 | 0.07 122 | 0.0 123 | 0.0 124 | 0.0 125 | 0.0 126 | 0.0 127 | 128 | 129 | 130 | 131 | 132 | -------------------------------------------------------------------------------- /volta_description/urdf/accessories/imu_volta.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | true 50 | ${robot_namespace} 51 | ${update_rate} 52 | ${frame} 53 | ${tf_pre}${frame} 54 | ${tf_pre}${frame} 55 | ${topic} 56 | 0.0 0.0 0.0 57 | 0.0 0.0 0.0 58 | 0.0005 59 | 0.0005 60 | 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /volta_description/urdf/accessories/lidar_volta.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 30 | 31 | 32 | 33 | 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 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 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 | 98 | 99 | 100 | 101 | 102 | 103 | true 104 | 0 0 0 0 0 0 105 | false 106 | ${update_rate} 107 | 108 | 109 | 110 | ${sample_size} 111 | 1 112 | ${min_angle} 113 | ${max_angle} 114 | 115 | 116 | 117 | ${min_range} 118 | ${max_range} 119 | 0.01 120 | 121 | 122 | 123 | ${topic} 124 | ${frame} 125 | ${robot_namespace} 126 | 0.005 127 | true 128 | 129 | 130 | 131 | 132 | 133 | -------------------------------------------------------------------------------- /volta_description/urdf/components/caster_volta.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 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 | 60 | 61 | 62 | 63 | 64 | 65 | Gazebo/DarkGrey 66 | false 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /volta_description/urdf/components/wheel_volta.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 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 | Gazebo/Red 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | transmission_interface/SimpleTransmission 77 | 78 | hardware_interface/VelocityJointInterface 79 | 80 | 81 | 1 82 | 83 | 84 | 85 | 86 | -------------------------------------------------------------------------------- /volta_description/urdf/volta.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 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 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 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 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | $(arg robot_namespace) 137 | gazebo_ros_control/DefaultRobotHWSim 138 | 139 | 140 | 141 | 142 | 143 | 144 | -------------------------------------------------------------------------------- /volta_description/urdf/volta.xacro: -------------------------------------------------------------------------------- 1 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /volta_description/urdf/volta_properties.xacro: -------------------------------------------------------------------------------- 1 | 2 | 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 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 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 | -------------------------------------------------------------------------------- /volta_localization/CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2 | Changelog for package volta_localization 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 | 5 | 1.1.1 (2021-03-22) 6 | ------------------ 7 | * Updated yaml config and launch files. 8 | * Merge branch 'kinetic-devel-r2-update' into melodic-devel 9 | * Merge branch 'melodic-devel' into kinetic-devel-r2-update 10 | * Merged volta_development. 11 | * Added BSD-3 license 12 | * Contributors: Nikhil Venkatesh, Toship 13 | 14 | 1.1.0 (2020-11-19) 15 | ------------------ 16 | * First Release 17 | -------------------------------------------------------------------------------- /volta_localization/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(volta_localization) 3 | 4 | add_compile_options(-std=c++11) 5 | 6 | find_package(catkin REQUIRED COMPONENTS 7 | robot_localization 8 | ) 9 | 10 | catkin_package( 11 | ) 12 | 13 | install( 14 | DIRECTORY config launch 15 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} 16 | ) 17 | -------------------------------------------------------------------------------- /volta_localization/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2021, Botsync Pte. Ltd. 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | * Redistributions of source code must retain the above copyright 7 | notice, this list of conditions and the following disclaimer. 8 | * Redistributions in binary form must reproduce the above copyright 9 | notice, this list of conditions and the following disclaimer in the 10 | documentation and/or other materials provided with the distribution. 11 | * Neither the name of the Botsync Pte. Ltd. nor the 12 | names of its contributors may be used to endorse or promote products 13 | derived from this software without specific prior written permission. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY 19 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | -------------------------------------------------------------------------------- /volta_localization/config/localization.yaml: -------------------------------------------------------------------------------- 1 | ekf_se_odom: 2 | frequency: 10 3 | sensor_timeout: 0.1 4 | two_d_mode: true 5 | transform_time_offset: 0.0 6 | transform_timeout: 0.0 7 | print_diagnostics: false 8 | debug: false 9 | 10 | # map_frame: map 11 | odom_frame: odom 12 | base_link_frame: base_link 13 | world_frame: odom 14 | publish_tf: false 15 | 16 | odom0: odometry/wheel 17 | odom0_config: [true, true, false, 18 | false, false, true, 19 | false, false, false, 20 | false, false, false, 21 | false, false, false] 22 | odom0_queue_size: 1 23 | odom0_differential: false 24 | odom0_relative: true 25 | 26 | imu0: imu/data 27 | imu0_config: [false, false, false, 28 | false, false, false, 29 | false, false, false, 30 | false, false, false, 31 | false, false, false] 32 | imu0_differential: false 33 | imu0_relative: true 34 | imu0_queue_size: 1 35 | imu0_remove_gravitational_acceleration: true 36 | -------------------------------------------------------------------------------- /volta_localization/launch/localization.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /volta_localization/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | volta_localization 4 | 1.1.1 5 | 6 | The volta_localization package 7 | 8 | Nikhil Venkatesh 9 | Mahendra L Seervi 10 | 11 | Nikhil Venkatesh 12 | Toship 13 | 14 | BSD-3-Clause 15 | 16 | catkin 17 | robot_localization 18 | robot_localization 19 | robot_localization 20 | 21 | -------------------------------------------------------------------------------- /volta_msgs/CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2 | Changelog for package volta_msgs 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 | 5 | 1.1.1 (2021-03-22) 6 | ------------------ 7 | * Updated yaml config and launch files. 8 | * Merge branch 'kinetic-devel-r2-update' into melodic-devel 9 | * Merge branch 'melodic-devel' into kinetic-devel-r2-update 10 | * Added install configuration in CMakeLists.txt 11 | * Merged volta_development. 12 | * Merged volta_development. 13 | * Added BSD-3 license 14 | * Contributors: Nikhil Venkatesh, Toship 15 | 16 | 1.1.0 (2020-11-19) 17 | ------------------ 18 | * First Release 19 | -------------------------------------------------------------------------------- /volta_msgs/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(volta_msgs) 3 | 4 | find_package(catkin REQUIRED COMPONENTS 5 | message_generation 6 | std_msgs 7 | ) 8 | 9 | add_message_files( 10 | DIRECTORY msg 11 | FILES 12 | RPM.msg 13 | Diagnostics.msg 14 | Table.msg 15 | BMS.msg 16 | ) 17 | 18 | generate_messages(DEPENDENCIES std_msgs) 19 | 20 | catkin_package( 21 | ) 22 | 23 | -------------------------------------------------------------------------------- /volta_msgs/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2021, Botsync Pte. Ltd. 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | * Redistributions of source code must retain the above copyright 7 | notice, this list of conditions and the following disclaimer. 8 | * Redistributions in binary form must reproduce the above copyright 9 | notice, this list of conditions and the following disclaimer in the 10 | documentation and/or other materials provided with the distribution. 11 | * Neither the name of the Botsync Pte. Ltd. nor the 12 | names of its contributors may be used to endorse or promote products 13 | derived from this software without specific prior written permission. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY 19 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | -------------------------------------------------------------------------------- /volta_msgs/msg/BMS.msg: -------------------------------------------------------------------------------- 1 | float32 soc 2 | float32 soh 3 | float32 current 4 | float32 voltage 5 | -------------------------------------------------------------------------------- /volta_msgs/msg/Diagnostics.msg: -------------------------------------------------------------------------------- 1 | bool LOWBATTERY_FLAG 2 | bool CHARGING_FLAG 3 | bool MOTOR_ALARM_FLAG 4 | bool BMS_ALARM_FLAG 5 | bool HIGH_TEMP_FLAG 6 | bool COMM_ERROR_FLAG 7 | 8 | uint16 BMS_SOC 9 | uint16 BMS_SOH 10 | uint16 BMS_Voltage 11 | int16 BMS_Current 12 | uint16 BMS_voltageDiff 13 | uint16 BMS_tempDiff 14 | uint16 BMS_BCUMode 15 | uint16 BMS_Alarm 16 | 17 | uint16[2] M_State 18 | uint16[2] M_Alarm 19 | uint16[2] M_Power 20 | uint16[2] M_Voltage 21 | uint16[2] M_Current 22 | uint8[2] M_Comm 23 | 24 | float32 Relay_Temp 25 | float32 PowerConn_Temp 26 | float32 PreCharge_Temp 27 | float32 Power_Supply_Temp 28 | 29 | 30 | float32 Battery_In_Volt 31 | float32 PRE_CHARGE_Volt 32 | float32 HW_ESTOP_Volt 33 | float32 SW_ESTOP_Volt 34 | 35 | uint16[2] Motor_Alarm_Code 36 | uint32[2] Motor_Fun_Fail 37 | 38 | uint16[2] M_INIT 39 | uint16[2] M_CW 40 | uint16[2] M_CCW 41 | uint16[2] M_STOP 42 | uint16[2] M_BREAK 43 | uint16[2] M_SETRPM 44 | uint16[2] M_GETRPM 45 | uint16[2] M_PARAM 46 | uint16[2] M_ALARM 47 | 48 | uint8 PRECHARGE_FUSE 49 | uint8 MOTOR_FUSE 50 | uint8 LED_STATE 51 | -------------------------------------------------------------------------------- /volta_msgs/msg/RPM.msg: -------------------------------------------------------------------------------- 1 | int16 left 2 | int16 right -------------------------------------------------------------------------------- /volta_msgs/msg/Table.msg: -------------------------------------------------------------------------------- 1 | float32 soc 2 | float32 soh 3 | float32 current 4 | float32 voltage 5 | uint8 system_status 6 | float32 relay_temp 7 | float32 powe_in_temp 8 | 9 | float32 motor_volt 10 | float32 battery_volt 11 | float32 hw_estop_volt 12 | uint8 motorAlarm 13 | uint8 diag_en 14 | uint8 hw_Estop_state 15 | uint8 sw_Estop_state 16 | uint8 ros_Estop_state 17 | -------------------------------------------------------------------------------- /volta_msgs/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | volta_msgs 4 | 1.1.1 5 | The volta_msgs package 6 | 7 | Nikhil Venkatesh 8 | Mahendra L Seervi 9 | 10 | Nikhil Venkatesh 11 | Toship 12 | 13 | BSD-3-Clause 14 | 15 | catkin 16 | message_generation 17 | std_msgs 18 | message_generation 19 | std_msgs 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /volta_navigation/CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2 | Changelog for package volta_navigation 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 | 5 | 1.1.1 (2021-03-22) 6 | ------------------ 7 | * Updated yaml config and launch files. 8 | * Merge branch 'kinetic-devel-r2-update' into melodic-devel 9 | * Merge branch 'melodic-devel' into kinetic-devel-r2-update 10 | * Merged volta_development. 11 | * Merged volta_development. 12 | * Added BSD-3 license 13 | * Contributors: Nikhil Venkatesh, Toship 14 | 15 | 1.1.0 (2020-11-19) 16 | ------------------ 17 | * First Release 18 | -------------------------------------------------------------------------------- /volta_navigation/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(volta_navigation) 3 | 4 | find_package(catkin REQUIRED 5 | ) 6 | 7 | catkin_package () 8 | 9 | install( 10 | DIRECTORY config launch maps 11 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} 12 | ) -------------------------------------------------------------------------------- /volta_navigation/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2021, Botsync Pte. Ltd. 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | * Redistributions of source code must retain the above copyright 7 | notice, this list of conditions and the following disclaimer. 8 | * Redistributions in binary form must reproduce the above copyright 9 | notice, this list of conditions and the following disclaimer in the 10 | documentation and/or other materials provided with the distribution. 11 | * Neither the name of the Botsync Pte. Ltd. nor the 12 | names of its contributors may be used to endorse or promote products 13 | derived from this software without specific prior written permission. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY 19 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | -------------------------------------------------------------------------------- /volta_navigation/config/amcl.yaml: -------------------------------------------------------------------------------- 1 | use_map_topic: true 2 | odom_model_type: diff 3 | odom_alpha5: 0.1 4 | gui_publish_rate: 10.0 5 | laser_max_beams: 60 6 | laser_max_range: 12.0 7 | min_particles: 500 8 | max_particles: 2000 9 | kld_err: 0.05 10 | kld_z: 0.99 11 | odom_alpha1: 0.2 12 | odom_alpha2: 0.2 13 | odom_alpha3: 0.2 14 | odom_alpha4: 0.2 15 | laser_z_hit: 0.5 16 | laser_z_short: 0.05 17 | laser_z_max: 0.05 18 | laser_z_rand: 0.5 19 | laser_sigma_hit: 0.2 20 | laser_lambda_short: 0.1 21 | laser_model_type: likelihood_field 22 | laser_likelihood_max_dist: 2.0 23 | update_min_d: 0.25 24 | update_min_a: 0.2 25 | resample_interval: 1 26 | transform_tolerance: 1.0 27 | recovery_alpha_slow: 0.0 28 | recovery_alpha_fast: 0.0 29 | initial_pose_x: 0.0 30 | initial_pose_y: 0.0 31 | initial_pose_a: 0.0 32 | 33 | odom_frame_id: odom 34 | global_frame_id: map 35 | base_frame_id: base_link 36 | -------------------------------------------------------------------------------- /volta_navigation/config/costmap.yaml: -------------------------------------------------------------------------------- 1 | footprint: [[-0.26, -0.19], [-0.26, 0.19], [0.235, 0.19], [0.235, -0.19]] 2 | 3 | footprint_padding: 0.02 4 | robot_base_frame: base_link 5 | update_frequency: 3.0 6 | publish_frequency: 2.0 7 | transform_tolerance: 1.0 8 | publish_voxel_map: false 9 | resolution: 0.05 10 | 11 | obstacle_range: 5.5 12 | raytrace_range: 8.0 13 | static: 14 | map_topic: map 15 | subscribe_to_updates: true 16 | lethal_cost_threshold: 50 17 | 18 | obstacles_laser: 19 | observation_sources: laser 20 | laser: {data_type: LaserScan, clearing: true, marking: true, topic: scan_filtered, inf_is_valid: true} 21 | 22 | inflation: 23 | inflation_radius: 0.6 24 | cost_scaling_factor: 1.0 25 | -------------------------------------------------------------------------------- /volta_navigation/config/costmap_global.yaml: -------------------------------------------------------------------------------- 1 | global_frame: map 2 | rolling_window: false 3 | track_unknown_space: false 4 | width: 15 5 | height: 15 6 | 7 | plugins: 8 | - {name: static, type: "costmap_2d::StaticLayer"} 9 | - {name: obstacles_laser, type: "costmap_2d::ObstacleLayer"} 10 | - {name: inflation, type: "costmap_2d::InflationLayer"} 11 | 12 | 13 | -------------------------------------------------------------------------------- /volta_navigation/config/costmap_local.yaml: -------------------------------------------------------------------------------- 1 | global_frame: odom 2 | rolling_window: true 3 | track_unknown_space: false 4 | width: 8 5 | height: 8 6 | 7 | plugins: 8 | - {name: obstacles_laser, type: "costmap_2d::ObstacleLayer"} 9 | - {name: inflation, type: "costmap_2d::InflationLayer"} 10 | -------------------------------------------------------------------------------- /volta_navigation/config/global_planner.yaml: -------------------------------------------------------------------------------- 1 | GlobalPlanner: 2 | cost_factor: 0.55 3 | lethal_cost: 245 4 | neutral_cost: 66 5 | orientation_mode: 2 6 | publish_potential: true 7 | use_dijkstra: true 8 | 9 | SBPLLatticePlanner: 10 | environment_type: XYThetaLattice 11 | planner_type: ARAPlanner 12 | allocated_time: 10.0 13 | initial_epsilon: 50.0 14 | forward_search: true 15 | nominalvel_mpersecs: 1.0 16 | timetoturn45degsinplace_secs: 1.0 17 | -------------------------------------------------------------------------------- /volta_navigation/config/gmapping.yaml: -------------------------------------------------------------------------------- 1 | odom_frame: odom 2 | base_frame: base_link 3 | map_frame: map 4 | 5 | map_update_interval: 0.5 6 | 7 | maxUrange: 12.0 8 | maxRange: 17.0 9 | particles: 30 10 | 11 | linearUpdate: 0.3 12 | angularUpdate: 0.5 13 | temporalUpdate: 2.0 14 | resampleThreshold: 0.5 15 | 16 | xmin: -10.0 17 | ymin: -10.0 18 | xmax: 10.0 19 | ymax: 10.0 20 | delta: 0.05 21 | 22 | sigma: 0.05 23 | kernelSize: 1 24 | lstep: 0.05 25 | astep: 0.05 26 | iterations: 5 27 | lsigma: 0.075 28 | ogain: 3.0 29 | lskip: 0 30 | llsamplerange: 0.01 31 | llsamplestep: 0.01 32 | lasamplerange: 0.005 33 | lasamplestep: 0.005 34 | -------------------------------------------------------------------------------- /volta_navigation/config/local_planner.yaml: -------------------------------------------------------------------------------- 1 | controller_frequency: 5.0 2 | controller_patience: 80.0 3 | planner_frequency: 2.0 4 | planner_patience: 80.0 5 | shutdown_costmaps: true 6 | oscillation_distance: 0.8 7 | oscillation_timeout: 10.0 8 | conservative_reset_dist: 0.1 9 | cost_factor: 0.58 10 | neutral_cost: 66 11 | lethal_cost: 240 12 | 13 | recovery_behaviour_enabled: true 14 | recovery_behaviors: [{name: conservative_reset, type: clear_costmap_recovery/ClearCostmapRecovery}, {name: aggressive_reset, type: clear_costmap_recovery/ClearCostmapRecovery}] 15 | 16 | DWAPlannerROS: 17 | acc_lim_x: 0.75 18 | acc_limit_trans: 0.75 19 | acc_lim_y: 0.0 20 | acc_lim_theta: 3.0 21 | 22 | max_vel_x: 0.5 23 | min_vel_x: 0.0 24 | max_vel_y: 0.0 25 | min_vel_y: 0.0 26 | 27 | max_trans_vel: 0.5 28 | min_trans_vel: 0.02 29 | max_rot_vel: 1.0 30 | min_rot_vel: 0.08 31 | trans_stopped_vel: 0.018 32 | rot_stopped_vel: 0.07 33 | yaw_goal_tolerance: 0.1 34 | xy_goal_tolerance: 0.3 35 | latch_xy_goal_tolerance: true 36 | 37 | sim_time: 2.5 38 | sim_granularity: 0.03 39 | angular_sim_granularity: 0.05 40 | vx_samples: 20 41 | vy_samples: 0 42 | vtheta_samples: 30 43 | 44 | penalize_negative_x: true 45 | path_distance_bias: 50.0 46 | goal_distance_bias: 20.0 47 | occdist_scale: 0.1 48 | forward_point_distance: 0.6 49 | stop_time_buffer: 0.1 50 | scaling_speed: 0.2 51 | control_frequency: 10.0 52 | max_scaling_factor: 0.1 53 | 54 | oscillation_reset_dist: 0.1 55 | oscillation_reset_angle: 0.1 56 | 57 | prune_plan: true 58 | use_dwa: true 59 | -------------------------------------------------------------------------------- /volta_navigation/launch/navigation.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 | 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 | 60 | 61 | -------------------------------------------------------------------------------- /volta_navigation/maps/gazebo.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/botsync/volta/123d46393578c26482e06a89a714c1db25b886d9/volta_navigation/maps/gazebo.pgm -------------------------------------------------------------------------------- /volta_navigation/maps/gazebo.yaml: -------------------------------------------------------------------------------- 1 | image: gazebo.pgm 2 | resolution: 0.050000 3 | origin: [-10.000000, -21.200000, 0.000000] 4 | negate: 0 5 | occupied_thresh: 0.65 6 | free_thresh: 0.196 7 | 8 | -------------------------------------------------------------------------------- /volta_navigation/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | volta_navigation 4 | 1.1.1 5 | The volta_navigation package 6 | 7 | Nikhil Venkatesh 8 | Mahendra L Seervi 9 | 10 | Nikhil Venkatesh 11 | Toship 12 | 13 | BSD-3-Clause 14 | 15 | catkin 16 | amcl 17 | move_base 18 | gmapping 19 | dwa_local_planner 20 | global_planner 21 | map_server 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /volta_navigation/rviz_config/navigation.rviz: -------------------------------------------------------------------------------- 1 | Panels: 2 | - Class: rviz/Displays 3 | Help Height: 78 4 | Name: Displays 5 | Property Tree Widget: 6 | Expanded: ~ 7 | Splitter Ratio: 0.5 8 | Tree Height: 778 9 | - Class: rviz/Selection 10 | Name: Selection 11 | - Class: rviz/Tool Properties 12 | Expanded: 13 | - /2D Pose Estimate1 14 | - /2D Nav Goal1 15 | - /Publish Point1 16 | Name: Tool Properties 17 | Splitter Ratio: 0.588679016 18 | - Class: rviz/Views 19 | Expanded: 20 | - /Current View1 21 | Name: Views 22 | Splitter Ratio: 0.5 23 | - Class: rviz/Time 24 | Experimental: false 25 | Name: Time 26 | SyncMode: 0 27 | SyncSource: LaserScan 28 | Toolbars: 29 | toolButtonStyle: 2 30 | Visualization Manager: 31 | Class: "" 32 | Displays: 33 | - Alpha: 0.5 34 | Cell Size: 0.100000001 35 | Class: rviz/Grid 36 | Color: 160; 160; 164 37 | Enabled: true 38 | Line Style: 39 | Line Width: 0.0299999993 40 | Value: Lines 41 | Name: Grid 42 | Normal Cell Count: 0 43 | Offset: 44 | X: 0 45 | Y: 0 46 | Z: 0 47 | Plane: XY 48 | Plane Cell Count: 100 49 | Reference Frame: 50 | Value: true 51 | - Alpha: 1 52 | Class: rviz/RobotModel 53 | Collision Enabled: false 54 | Enabled: true 55 | Links: 56 | All Links Enabled: true 57 | Expand Joint Details: false 58 | Expand Link Details: false 59 | Expand Tree: false 60 | Link Tree Style: Links in Alphabetic Order 61 | back_left_wheel: 62 | Alpha: 1 63 | Show Axes: false 64 | Show Trail: false 65 | Value: true 66 | back_right_wheel: 67 | Alpha: 1 68 | Show Axes: false 69 | Show Trail: false 70 | Value: true 71 | base_link: 72 | Alpha: 1 73 | Show Axes: false 74 | Show Trail: false 75 | Value: true 76 | footprint: 77 | Alpha: 1 78 | Show Axes: false 79 | Show Trail: false 80 | front_left_wheel: 81 | Alpha: 1 82 | Show Axes: false 83 | Show Trail: false 84 | Value: true 85 | front_right_wheel: 86 | Alpha: 1 87 | Show Axes: false 88 | Show Trail: false 89 | Value: true 90 | gps: 91 | Alpha: 1 92 | Show Axes: false 93 | Show Trail: false 94 | imu: 95 | Alpha: 1 96 | Show Axes: false 97 | Show Trail: false 98 | velodyne: 99 | Alpha: 1 100 | Show Axes: false 101 | Show Trail: false 102 | Value: true 103 | velodyne_base_link: 104 | Alpha: 1 105 | Show Axes: false 106 | Show Trail: false 107 | Value: true 108 | velodyne_mount: 109 | Alpha: 1 110 | Show Axes: false 111 | Show Trail: false 112 | Value: true 113 | Name: RobotModel 114 | Robot Description: robot_description 115 | TF Prefix: "" 116 | Update Interval: 0 117 | Value: true 118 | Visual Enabled: true 119 | - Class: rviz/TF 120 | Enabled: true 121 | Frame Timeout: 15 122 | Frames: 123 | All Enabled: true 124 | back_left_wheel: 125 | Value: true 126 | back_right_wheel: 127 | Value: true 128 | base_link: 129 | Value: true 130 | footprint: 131 | Value: true 132 | front_left_wheel: 133 | Value: true 134 | front_right_wheel: 135 | Value: true 136 | gps: 137 | Value: true 138 | imu: 139 | Value: true 140 | map: 141 | Value: true 142 | odom: 143 | Value: true 144 | velodyne: 145 | Value: true 146 | velodyne_base_link: 147 | Value: true 148 | velodyne_mount: 149 | Value: true 150 | Marker Scale: 1 151 | Name: TF 152 | Show Arrows: true 153 | Show Axes: true 154 | Show Names: true 155 | Tree: 156 | map: 157 | odom: 158 | base_link: 159 | back_left_wheel: 160 | {} 161 | back_right_wheel: 162 | {} 163 | footprint: 164 | {} 165 | front_left_wheel: 166 | {} 167 | front_right_wheel: 168 | {} 169 | gps: 170 | {} 171 | imu: 172 | {} 173 | velodyne_mount: 174 | velodyne_base_link: 175 | velodyne: 176 | {} 177 | Update Interval: 0 178 | Value: true 179 | - Alpha: 0.699999988 180 | Class: rviz/Map 181 | Color Scheme: costmap 182 | Draw Behind: false 183 | Enabled: true 184 | Name: Global Costmap 185 | Topic: /move_base/global_costmap/costmap 186 | Unreliable: false 187 | Use Timestamp: false 188 | Value: true 189 | - Alpha: 0.699999988 190 | Class: rviz/Map 191 | Color Scheme: costmap 192 | Draw Behind: false 193 | Enabled: true 194 | Name: Local Map 195 | Topic: /move_base/local_costmap/costmap 196 | Unreliable: false 197 | Use Timestamp: false 198 | Value: true 199 | - Alpha: 1 200 | Buffer Length: 1 201 | Class: rviz/Path 202 | Color: 25; 255; 0 203 | Enabled: true 204 | Head Diameter: 0.300000012 205 | Head Length: 0.200000003 206 | Length: 0.300000012 207 | Line Style: Lines 208 | Line Width: 0.0299999993 209 | Name: Global Path 210 | Offset: 211 | X: 0 212 | Y: 0 213 | Z: 0 214 | Pose Color: 255; 85; 255 215 | Pose Style: None 216 | Radius: 0.0299999993 217 | Shaft Diameter: 0.100000001 218 | Shaft Length: 0.100000001 219 | Topic: /move_base/GlobalPlanner/plan 220 | Unreliable: false 221 | Value: true 222 | - Alpha: 1 223 | Buffer Length: 1 224 | Class: rviz/Path 225 | Color: 255; 0; 0 226 | Enabled: true 227 | Head Diameter: 0.300000012 228 | Head Length: 0.200000003 229 | Length: 0.300000012 230 | Line Style: Lines 231 | Line Width: 0.0299999993 232 | Name: Local Path 233 | Offset: 234 | X: 0 235 | Y: 0 236 | Z: 0 237 | Pose Color: 255; 85; 255 238 | Pose Style: None 239 | Radius: 0.0299999993 240 | Shaft Diameter: 0.100000001 241 | Shaft Length: 0.100000001 242 | Topic: /move_base/DWAPlannerROS/local_plan 243 | Unreliable: false 244 | Value: true 245 | - Alpha: 0.699999988 246 | Class: rviz/Map 247 | Color Scheme: map 248 | Draw Behind: false 249 | Enabled: true 250 | Name: Map 251 | Topic: /map 252 | Unreliable: false 253 | Use Timestamp: false 254 | Value: true 255 | - Alpha: 1 256 | Autocompute Intensity Bounds: true 257 | Autocompute Value Bounds: 258 | Max Value: 10 259 | Min Value: -10 260 | Value: true 261 | Axis: Z 262 | Channel Name: intensity 263 | Class: rviz/LaserScan 264 | Color: 255; 255; 255 265 | Color Transformer: Intensity 266 | Decay Time: 0 267 | Enabled: true 268 | Invert Rainbow: false 269 | Max Color: 255; 255; 255 270 | Max Intensity: 4.29125032e-37 271 | Min Color: 0; 0; 0 272 | Min Intensity: 4.29125032e-37 273 | Name: LaserScan 274 | Position Transformer: XYZ 275 | Queue Size: 10 276 | Selectable: true 277 | Size (Pixels): 2 278 | Size (m): 0.00999999978 279 | Style: Points 280 | Topic: /scan_filtered 281 | Unreliable: false 282 | Use Fixed Frame: true 283 | Use rainbow: true 284 | Value: true 285 | - Class: rviz/MarkerArray 286 | Enabled: true 287 | Marker Topic: /visualization_marker 288 | Name: MarkerArray 289 | Namespaces: 290 | {} 291 | Queue Size: 100 292 | Value: true 293 | Enabled: true 294 | Global Options: 295 | Background Color: 48; 48; 48 296 | Default Light: true 297 | Fixed Frame: map 298 | Frame Rate: 30 299 | Name: root 300 | Tools: 301 | - Class: rviz/Interact 302 | Hide Inactive Objects: true 303 | - Class: rviz/MoveCamera 304 | - Class: rviz/Select 305 | - Class: rviz/FocusCamera 306 | - Class: rviz/Measure 307 | - Class: rviz/SetInitialPose 308 | Topic: /initialpose 309 | - Class: rviz/SetGoal 310 | Topic: /move_base_simple/goal 311 | - Class: rviz/PublishPoint 312 | Single click: true 313 | Topic: /clicked_point 314 | Value: true 315 | Views: 316 | Current: 317 | Angle: -2.57000017 318 | Class: rviz/TopDownOrtho 319 | Enable Stereo Rendering: 320 | Stereo Eye Separation: 0.0599999987 321 | Stereo Focal Distance: 1 322 | Swap Stereo Eyes: false 323 | Value: false 324 | Invert Z Axis: false 325 | Name: Current View 326 | Near Clip Distance: 0.00999999978 327 | Scale: 23.7553539 328 | Target Frame: base_link 329 | Value: TopDownOrtho (rviz) 330 | X: 6.98912191 331 | Y: 8.19719887 332 | Saved: ~ 333 | Window Geometry: 334 | Displays: 335 | collapsed: false 336 | Height: 1059 337 | Hide Left Dock: false 338 | Hide Right Dock: false 339 | QMainWindow State: 000000ff00000000fd00000004000000000000016b00000399fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000006100fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000002800000399000000d700fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f00000399fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000002800000399000000ad00fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000007470000003efc0100000002fb0000000800540069006d00650100000000000007470000030000fffffffb0000000800540069006d00650100000000000004500000000000000000000004c10000039900000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 340 | Selection: 341 | collapsed: false 342 | Time: 343 | collapsed: false 344 | Tool Properties: 345 | collapsed: false 346 | Views: 347 | collapsed: false 348 | Width: 1863 349 | X: 57 350 | Y: 21 351 | -------------------------------------------------------------------------------- /volta_rules/CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2 | Changelog for package volta_rules 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 | 5 | 1.1.1 (2021-03-22) 6 | ------------------ 7 | * Updated yaml config and launch files. 8 | * Merge branch 'kinetic-devel-r2-update' into melodic-devel 9 | * Merge branch 'melodic-devel' into kinetic-devel-r2-update 10 | * updated sensor_read.py file. Added install configuration in CMakeLists.txt 11 | * Added install configuration in CMakeLists.txt 12 | * Merged volta_development. 13 | * Merged volta_development. 14 | * Added BSD-3 license 15 | * Contributors: Nikhil Venkatesh, Toship 16 | 17 | 1.1.0 (2020-11-19) 18 | ------------------ 19 | * First Release -------------------------------------------------------------------------------- /volta_rules/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(volta_rules) 3 | 4 | find_package(catkin REQUIRED COMPONENTS 5 | 6 | ) 7 | 8 | catkin_package( 9 | CATKIN_DEPENDS 10 | ) 11 | 12 | install(PROGRAMS 13 | create_udev_rules 14 | DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} 15 | ) 16 | 17 | catkin_install_python(PROGRAMS sensor_read.py 18 | DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}) 19 | 20 | install(FILES 21 | udev_rules.rules 22 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} 23 | ) -------------------------------------------------------------------------------- /volta_rules/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2021, Botsync Pte. Ltd. 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | * Redistributions of source code must retain the above copyright 7 | notice, this list of conditions and the following disclaimer. 8 | * Redistributions in binary form must reproduce the above copyright 9 | notice, this list of conditions and the following disclaimer in the 10 | documentation and/or other materials provided with the distribution. 11 | * Neither the name of the Botsync Pte. Ltd. nor the 12 | names of its contributors may be used to endorse or promote products 13 | derived from this software without specific prior written permission. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY 19 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | -------------------------------------------------------------------------------- /volta_rules/README.md: -------------------------------------------------------------------------------- 1 | # Volta_Rules 2 | ## Steps to Create Udev Rules for device bindings : 3 | 4 | ### 1. For binding sensors - 5 | ``` 6 | $ rosrun volta_rules sensor_read.py 7 | ``` 8 | ### 2. For updating udev rules - 9 | ``` 10 | $ rosrun volta_rules create_udev_rules 11 | ``` 12 | -------------------------------------------------------------------------------- /volta_rules/create_udev_rules: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "" 3 | echo "This script copies a udev rule to /etc to facilitate bringing" 4 | echo "" 5 | 6 | sudo cp `rospack find volta_rules`/udev_rules.rules /etc/udev/rules.d 7 | 8 | echo "" 9 | echo "Restarting udev" 10 | echo "" 11 | sudo service udev reload 12 | sudo service udev restart 13 | sudo udevadm trigger --action=change 14 | -------------------------------------------------------------------------------- /volta_rules/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | volta_rules 4 | 1.1.1 5 | The volta_rules package 6 | 7 | Nikhil Venkatesh 8 | Mahendra L Seervi 9 | Kai Jie 10 | 11 | Nikhil Venkatesh 12 | Toship 13 | 14 | BSD-3-Clause 15 | catkin 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /volta_rules/sensor_read.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | import usb.core 3 | import rospkg 4 | 5 | existing_idvendor_list = [] 6 | existing_idproduct_list = [] 7 | new_idvendor_list = [] 8 | new_idproduct_list = [] 9 | 10 | def Diff(list1, list2): 11 | return (list(list(set(list1)-set(list2)) + list(set(list2)-set(list1)))) 12 | 13 | def add_leading_zeros(product_id): 14 | if(product_id != 0): 15 | if(len(product_id)==3): 16 | return ('0'+product_id) 17 | elif(len(product_id)==2): 18 | return ('00'+product_id) 19 | elif(len(product_id)==1): 20 | return ('000'+product_id) 21 | else: 22 | return product_id 23 | 24 | raw_input("Unplug all the USB devices from the system and press 'Enter'" + '\n') 25 | dev = usb.core.find(find_all=True) 26 | for cfg in dev: 27 | existing_idvendor_list.append(str(cfg.idVendor)) 28 | existing_idproduct_list.append(str(cfg.idProduct)) 29 | 30 | ####################### To read the idproduct and idvendor for MCU ####################### 31 | raw_input("Plug MCU board and press 'Enter'") 32 | dev = usb.core.find(find_all=True) 33 | for cfg in dev: 34 | new_idvendor_list.append(str(cfg.idVendor)) 35 | new_idproduct_list.append(str(cfg.idProduct)) 36 | 37 | MCU_idvendor = ''.join(Diff(new_idvendor_list, existing_idvendor_list)) 38 | existing_idvendor_list.append(MCU_idvendor) 39 | if(MCU_idvendor == ""): 40 | MCU_idvendor = 0 41 | 42 | MCU_idvendor = add_leading_zeros(format(int(MCU_idvendor), 'x')) 43 | MCU_idproduct = ''.join(Diff(new_idproduct_list, existing_idproduct_list)) 44 | existing_idproduct_list.append(MCU_idproduct) 45 | if(MCU_idproduct == ""): 46 | MCU_idproduct = 0 47 | 48 | MCU_idproduct = add_leading_zeros(format(int(MCU_idproduct), 'x')) 49 | if (MCU_idvendor == '0' or MCU_idproduct == '0'): 50 | print ("Not binding MCU" + '\n') 51 | else: 52 | print("MCU_idvendor : " + MCU_idvendor + "," +" MCU_idproduct : " + MCU_idproduct + '\n') 53 | 54 | ####################### To read the idproduct and idvendor for rplidar ####################### 55 | raw_input("Plug rplidar and press 'Enter'") 56 | dev = usb.core.find(find_all=True) 57 | for cfg in dev: 58 | new_idvendor_list.append(str(cfg.idVendor)) 59 | new_idproduct_list.append(str(cfg.idProduct)) 60 | 61 | rplidar_idvendor = ''.join(Diff(new_idvendor_list, existing_idvendor_list)) 62 | existing_idvendor_list.append(rplidar_idvendor) 63 | if(rplidar_idvendor == ""): 64 | rplidar_idvendor = 0 65 | 66 | rplidar_idvendor = add_leading_zeros(format(int(rplidar_idvendor), 'x')) 67 | rplidar_idproduct = ''.join(Diff(new_idproduct_list, existing_idproduct_list)) 68 | existing_idproduct_list.append(rplidar_idproduct) 69 | if(rplidar_idproduct == ""): 70 | rplidar_idproduct = 0 71 | 72 | rplidar_idproduct = add_leading_zeros(format(int(rplidar_idproduct), 'x')) 73 | if (rplidar_idvendor == '0' or rplidar_idproduct == '0'): 74 | print ("Not binding rplidar" + '\n') 75 | else: 76 | print("rplidar_idvendor : " + rplidar_idvendor + "," + " rplidar_idproduct : " + rplidar_idproduct + '\n') 77 | 78 | ####################### To read the idproduct and idvendor for IMU sensor ####################### 79 | raw_input("plug imu sensor and press 'Enter'") 80 | dev = usb.core.find(find_all=True) 81 | for cfg in dev: 82 | new_idvendor_list.append(str(cfg.idVendor)) 83 | new_idproduct_list.append(str(cfg.idProduct)) 84 | 85 | imu_idvendor = ''.join(Diff(new_idvendor_list, existing_idvendor_list)) 86 | existing_idvendor_list.append(imu_idvendor) 87 | if(imu_idvendor == ""): 88 | imu_idvendor = 0 89 | 90 | imu_idvendor = add_leading_zeros(format(int(imu_idvendor), 'x')) 91 | imu_idproduct = ''.join(Diff(new_idproduct_list, existing_idproduct_list)) 92 | existing_idproduct_list.append(imu_idproduct) 93 | if(imu_idproduct == ""): 94 | imu_idproduct = 0 95 | 96 | imu_idproduct = add_leading_zeros(format(int(imu_idproduct), 'x')) 97 | if (imu_idvendor == '0' or imu_idproduct == '0'): 98 | print ("Not binding IMU" + '\n') 99 | else: 100 | print("imu_idvendor : " + imu_idvendor + "," + " imu_idproduct : " + imu_idproduct + '\n') 101 | 102 | ####################### To read the idproduct and idvendor for camera ####################### 103 | raw_input("plug camera and press 'Enter'") 104 | dev = usb.core.find(find_all=True) 105 | for cfg in dev: 106 | new_idvendor_list.append(str(cfg.idVendor)) 107 | new_idproduct_list.append(str(cfg.idProduct)) 108 | 109 | camera_idvendor = ''.join(Diff(new_idvendor_list, existing_idvendor_list)) 110 | existing_idvendor_list.append(camera_idvendor) 111 | if(camera_idvendor == ""): 112 | camera_idvendor = 0 113 | 114 | camera_idvendor = add_leading_zeros(format(int(camera_idvendor), 'x')) 115 | camera_idproduct = ''.join(Diff(new_idproduct_list, existing_idproduct_list)) 116 | existing_idproduct_list.append(camera_idproduct) 117 | if(camera_idproduct == ""): 118 | camera_idproduct = 0 119 | 120 | camera_idproduct = add_leading_zeros(format(int(camera_idproduct), 'x')) 121 | if (camera_idvendor == '0' or camera_idproduct == '0'): 122 | print ("Not binding camera" + '\n') 123 | else: 124 | print("camera_idvendor : " + camera_idvendor + "," + " camera_idproduct : " + camera_idproduct + '\n') 125 | 126 | ####################### print all the values####################### 127 | print("MCU_idvendor : " + MCU_idvendor + "," +" MCU_idproduct : " + MCU_idproduct) 128 | print("rplidar_idvendor : " + rplidar_idvendor + "," + " rplidar_idproduct : " + rplidar_idproduct) 129 | print("imu_idvendor : " + imu_idvendor + "," + " imu_idproduct : " + imu_idproduct) 130 | print("camera_idvendor : " + camera_idvendor + "," + " camera_idproduct : " + camera_idproduct) 131 | 132 | ###################### copying the data to udev rules 133 | rospack = rospkg.RosPack() 134 | path = rospack.get_path('volta_rules') 135 | f= open(path + "/udev_rules.rules","w+") 136 | f.write('KERNEL=="ttyUSB*", ATTRS{idVendor}=="'+MCU_idvendor+'", ATTRS{idProduct}=="'+MCU_idproduct+'", MODE:="0777", SYMLINK+="mcu"'+ '\n') 137 | 138 | # For rplidar 139 | f.write('KERNEL=="ttyUSB*", ATTRS{idVendor}=="'+rplidar_idvendor+'", ATTRS{idProduct}=="'+rplidar_idproduct+'", MODE:="0777", SYMLINK+="rplidar"'+ '\n') 140 | 141 | # For imu 142 | f.write('KERNEL=="ttyUSB*", ATTRS{idVendor}=="'+imu_idvendor+'", ATTRS{idProduct}=="'+imu_idproduct+'", MODE:="0777", SYMLINK+="imu"'+ '\n') 143 | 144 | # For camera 145 | f.write('KERNEL=="ttyUSB*", ATTRS{idVendor}=="'+camera_idvendor+'", ATTRS{idProduct}=="'+camera_idproduct+'", MODE:="0777", SYMLINK+="camera"') 146 | 147 | f.close() 148 | -------------------------------------------------------------------------------- /volta_rules/udev_rules.rules: -------------------------------------------------------------------------------- 1 | KERNEL=="ttyUSB*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE:="0777", SYMLINK+="mcu" 2 | KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0777", SYMLINK+="rplidar" 3 | KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777", SYMLINK+="imu" 4 | KERNEL=="ttyUSB*", ATTRS{idVendor}=="0", ATTRS{idProduct}=="0", MODE:="0777", SYMLINK+="camera" 5 | -------------------------------------------------------------------------------- /volta_teleoperator/CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2 | Changelog for package volta_teleoperator 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 | 5 | 1.1.1 (2021-03-22) 6 | ------------------ 7 | * Updated yaml config and launch files. 8 | * Merge branch 'kinetic-devel-r2-update' into melodic-devel 9 | * Merge branch 'melodic-devel' into kinetic-devel-r2-update 10 | * updated sensor_read.py file. Added install configuration in CMakeLists.txt 11 | * Added install configuration in CMakeLists.txt 12 | * Merged volta_development. 13 | * Merged volta_development. 14 | * Added BSD-3 license 15 | * renamed the launch file for volta_teleoperator 16 | * Contributors: Nikhil Venkatesh, Toship 17 | 18 | 1.1.0 (2020-11-19) 19 | ------------------ 20 | * First Release -------------------------------------------------------------------------------- /volta_teleoperator/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(volta_teleoperator) 3 | 4 | find_package(catkin REQUIRED COMPONENTS 5 | teleop_twist_joy 6 | teleop_twist_keyboard 7 | sensor_msgs 8 | geometry_msgs 9 | volta_msgs 10 | actionlib_msgs 11 | ) 12 | 13 | catkin_package( 14 | INCLUDE_DIRS 15 | include 16 | LIBRARIES 17 | joy_teleop 18 | ) 19 | 20 | include_directories( 21 | include 22 | ${catkin_INCLUDE_DIRS} 23 | ) 24 | 25 | add_library(volta_joy_teleop src/joy_teleop.cpp) 26 | add_executable(volta_joy_teleop_node src/joy_teleop_node.cpp) 27 | target_link_libraries(volta_joy_teleop_node volta_joy_teleop ${catkin_LIBRARIES}) 28 | 29 | 30 | install(DIRECTORY include/${PROJECT_NAME}/ 31 | DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} 32 | PATTERN ".svn" EXCLUDE 33 | ) 34 | 35 | install(TARGETS 36 | volta_joy_teleop 37 | volta_joy_teleop_node 38 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 39 | LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 40 | RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} 41 | ) 42 | 43 | install( 44 | DIRECTORY config launch 45 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} 46 | ) -------------------------------------------------------------------------------- /volta_teleoperator/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2021, Botsync Pte. Ltd. 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | * Redistributions of source code must retain the above copyright 7 | notice, this list of conditions and the following disclaimer. 8 | * Redistributions in binary form must reproduce the above copyright 9 | notice, this list of conditions and the following disclaimer in the 10 | documentation and/or other materials provided with the distribution. 11 | * Neither the name of the Botsync Pte. Ltd. nor the 12 | names of its contributors may be used to endorse or promote products 13 | derived from this software without specific prior written permission. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY 19 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | -------------------------------------------------------------------------------- /volta_teleoperator/config/joy.yaml: -------------------------------------------------------------------------------- 1 | enable_button: 0 2 | stop_button: 2 3 | e_stop_button: 3 4 | linear_speed_axis: 1 5 | angular_speed_axis: 0 6 | 7 | max_linear_speed: 0.5 8 | max_angular_speed: 0.7 9 | 10 | enable_e_stop: 1 11 | 12 | cmd_vel_topic: joy/cmd_vel 13 | e_stop_pub_topic: e_stop_sw_enable 14 | 15 | joy_topic: joy 16 | -------------------------------------------------------------------------------- /volta_teleoperator/include/volta_teleoperator/joy_teleop.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Copyright (c) 2020, Botsync Pte. Ltd. 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | * Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of the Botsync Pte. Ltd. nor the 14 | names of its contributors may be used to endorse or promote products 15 | derived from this software without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 18 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 20 | DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY 21 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 22 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 24 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 26 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | 28 | */ 29 | 30 | #include 31 | #include 32 | #include 33 | #include 34 | 35 | bool e_stop_status = false; 36 | 37 | int enable_button; 38 | int stop_button; 39 | int e_stop_button; 40 | int linear_speed_axis; 41 | int angular_speed_axis; 42 | 43 | int enable_e_stop; 44 | 45 | double max_linear_speed; 46 | double max_angular_speed; 47 | 48 | ros::Subscriber joy_subscriber; 49 | 50 | ros::Publisher cmd_vel_pub; 51 | ros::Publisher e_stop_pub; 52 | 53 | bool dead_man = false; 54 | geometry_msgs::Twist cmd_to_send; 55 | 56 | void joy_callback(const sensor_msgs::Joy::ConstPtr& joy); 57 | -------------------------------------------------------------------------------- /volta_teleoperator/launch/teleoperator.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /volta_teleoperator/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | volta_teleoperator 4 | 1.1.1 5 | The volta_teleoperator package 6 | 7 | Nikhil Venkatesh 8 | Mahendra L Seervi 9 | 10 | Nikhil Venkatesh 11 | Toship 12 | 13 | BSD-3-Clause 14 | 15 | catkin 16 | teleop_twist_keyboard 17 | sensor_msgs 18 | volta_msgs 19 | geometry_msgs 20 | teleop_twist_joy 21 | actionlib_msgs 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /volta_teleoperator/src/joy_teleop.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Copyright (c) 2020, Botsync Pte. Ltd. 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | * Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of the Botsync Pte. Ltd. nor the 14 | names of its contributors may be used to endorse or promote products 15 | derived from this software without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 18 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 20 | DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY 21 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 22 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 24 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 26 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | 28 | */ 29 | 30 | #include 31 | 32 | void joy_callback(const sensor_msgs::Joy::ConstPtr& joy) { 33 | geometry_msgs::Twist cmd; 34 | 35 | if (enable_e_stop && joy->buttons[e_stop_button] && !e_stop_status) { 36 | std_msgs::Bool e_stop_msg; 37 | 38 | e_stop_msg.data = true; 39 | e_stop_status = true; 40 | 41 | // Publish 0 velocity 42 | cmd.linear.x = 0.0; 43 | cmd.linear.y = 0.0; 44 | cmd.linear.z = 0.0; 45 | cmd.angular.x = 0.0; 46 | cmd.angular.y = 0.0; 47 | cmd.angular.z = 0.0; 48 | 49 | e_stop_pub.publish(e_stop_msg); 50 | } else if (enable_e_stop && joy->buttons[e_stop_button] && e_stop_status) { 51 | std_msgs::Bool e_stop_msg; 52 | 53 | e_stop_msg.data = false; 54 | e_stop_status = false; 55 | 56 | // Publish 0 velocity 57 | cmd.linear.x = 0.0; 58 | cmd.linear.y = 0.0; 59 | cmd.linear.z = 0.0; 60 | cmd.angular.x = 0.0; 61 | cmd.angular.y = 0.0; 62 | cmd.angular.z = 0.0; 63 | 64 | e_stop_pub.publish(e_stop_msg); 65 | } else if (joy->buttons[stop_button]) { 66 | // Publish 0 velocity 67 | cmd.linear.x = 0.0; 68 | cmd.linear.y = 0.0; 69 | cmd.linear.z = 0.0; 70 | cmd.angular.x = 0.0; 71 | cmd.angular.y = 0.0; 72 | cmd.angular.z = 0.0; 73 | 74 | } else if (joy->buttons[enable_button]) { 75 | cmd.linear.x = max_linear_speed * joy->axes[linear_speed_axis]; 76 | cmd.linear.y = 0.0; 77 | cmd.linear.z = 0.0; 78 | cmd.angular.x = 0.0; 79 | cmd.angular.y = 0.0; 80 | cmd.angular.z = max_angular_speed * joy->axes[angular_speed_axis]; 81 | dead_man = true; 82 | cmd_to_send = cmd; 83 | 84 | } else { 85 | cmd.linear.x = 0.0; 86 | cmd.linear.y = 0.0; 87 | cmd.linear.z = 0.0; 88 | cmd.angular.x = 0.0; 89 | cmd.angular.y = 0.0; 90 | cmd.angular.z = 0.0; 91 | dead_man = false; 92 | } 93 | 94 | cmd_vel_pub.publish(cmd); 95 | } 96 | -------------------------------------------------------------------------------- /volta_teleoperator/src/joy_teleop_node.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Copyright (c) 2020, Botsync Pte. Ltd. 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | * Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of the Botsync Pte. Ltd. nor the 14 | names of its contributors may be used to endorse or promote products 15 | derived from this software without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 18 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 20 | DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY 21 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 22 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 24 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 26 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | 28 | */ 29 | 30 | #include 31 | 32 | int main(int argc, char** argv) { 33 | ros::init(argc, argv, "joy_teleop_node"); 34 | 35 | ros::NodeHandle nh; 36 | 37 | nh.param("enable_button", enable_button, 1); 38 | nh.param("stop_button", stop_button, 2); 39 | nh.param("e_stop_button", e_stop_button, 3); 40 | nh.param("linear_speed_axis", linear_speed_axis, 1); 41 | nh.param("angular_speed_axis", angular_speed_axis, 0); 42 | 43 | nh.param("max_linear_speed", max_linear_speed, 0.3); 44 | nh.param("max_angular_speed", max_angular_speed, 0.3); 45 | 46 | nh.param("enable_e_stop", enable_e_stop, 0); 47 | 48 | std::string cmd_vel_topic, e_stop_pub_topic, joy_topic, e_stop_sub_topic; 49 | 50 | nh.param("cmd_vel_topic", cmd_vel_topic, "joy/cmd_vel"); 51 | nh.param("e_stop_pub_topic", e_stop_pub_topic, "/e_stop_sw_enable"); 52 | 53 | nh.param("joy_topic", joy_topic, "/joy"); 54 | 55 | cmd_vel_pub = nh.advertise(cmd_vel_topic, 1); 56 | 57 | joy_subscriber = nh.subscribe(joy_topic, 1, joy_callback); 58 | 59 | if (enable_e_stop) { 60 | ROS_INFO("Enable e-stop: %d", enable_e_stop); 61 | e_stop_pub = nh.advertise(e_stop_pub_topic, 1); 62 | } 63 | 64 | ros::Rate r(5); 65 | while (ros::ok()) { 66 | if (dead_man) { 67 | cmd_vel_pub.publish(cmd_to_send); 68 | } 69 | r.sleep(); 70 | ros::spinOnce(); 71 | } 72 | 73 | return 0; 74 | //ros::spin(); 75 | } 76 | --------------------------------------------------------------------------------