### Clone the package ``` git clone http://git.mistlab.ca/vvaradharajan/mist_ws.git ``` # Dependencies to install ``` sudo apt-get install python-catkin-tools python-wstool ros-kinetic-cmake-modules protobuf-compiler autoconf ros-kinetic-mavros* ros-kinetic-tf* \ ros-kinetic-rviz ros-kinetic-cv-bridge ros-kinetic-image-geometry ros-kinetic-pcl-* ros-kinetic-octomap* ros-kinetic-image-proc \ ros-kinetic-nmea-comms ffmpeg libusb-1.0-0-dev libsdl2-dev ``` # Setting up the bat0 phy interface PLEASE SET THIS UP BEFORE ATTEMPTING TO USE BATMAN NODE. Please refer to batman-README.md # DJI M300 This workspace includes relevant packages to run [rosbuzz](https://github.com/MISTLab/ROSBuzz) with the [DJI OSDK](https://github.com/dji-sdk/Onboard-SDK-ROS) on the M300 drones. The workspace has been tested in Ubuntu 16.04 and ROS Kinetic. ### Setup the workspace ``` cd mist_ws wstool init wstool merge packages_https_m300_batman.rosinstall wstool update ``` ### Troubleshooting * In case of permission error, make sure to follow the [permission](https://github.com/dji-sdk/Onboard-SDK-ROS#3permission) section to have read/write access for the uart communication. # Spiri ### Setup the workspace ``` cd mist_ws wstool init wstool merge packages_https_spiri_batman.rosinstall wstool update ``` # DJI M100 # Khepera IV # Spot ### Build the whole workspace ``` catkin config -DCMAKE_BUILD_TYPE=Release -DSIM=0 -DKIN=1 catkin build ```` ## Autonomy Stack Notes: 1. Based on the robot launch its respective launch file from the rover_launch ros pkg. ### Optimus ``` roslaunch rover_launch rover_optimus.launch ``` ### Jean rover ``` roslaunch rover_launch rover_agx.launch ``` ### Spot ``` sudo route add -net 192.168.50.0/24 gw 192.168.1.3 # Route to the robot not setup yet, so do this to communicate with the robot. roslaunch rover_launch spot.launch ``` 2. Use a computer with valid ROS installation to act as a base station, on the base station launch the base station launch script. Make sure you have a ps4 joystick paired or connected via USB for control. **Note: Make sure the IP of the robot and your Ip are correct in the script** Get to the location of the script ``` cd src/rover_launch/launch_scripts ``` ### Optimus ``` bash bash_optimus.sh ``` ### Jean rover ``` bash bash_tars.sh ``` ### Spot ``` bash bash_spot.sh ``` Now one should be able to visualize the autonomy module components (pointcloud, images, tf, etc.), and control the robot manualy based on the commands below. ### Local Planner Joystick Mapping ``` # Teleop configuration for PS4 joystick. # Left thumb-stick up/down/left/right for forward/backward translation # Right thumb-stick left/right for yaw # Left shoulder button for obstacle enabled # Right shoulder button for obstacle disabled # # L1 R1 # L2 R2 # _=====_ _=====_ # / _____ \ / _____ \ # +.-'_____'-.------------------------------.-'_____'-.+ # / | | '. S O N Y .' | _ | \ # / ___| /|\ |___ \ / ___| /_\ |___ \ (Y) # / | | | ; ; | _ _ || # | | <--- ---> | | | ||_| (_)|| (X) (B) # | |___ | ___| ; ; |___ ___|| # |\ | \|/ | / _ ____ _ \ | (X) | /| (A) # | \ |_____| .','" "', (_PS_) ,'" "', '. |_____| .' | # | '-.______.-' / \ / \ '-._____.-' | # | | LJ |--------| RJ | | # | /\ / \ /\ | # | / '.___.' '.___.' \ | # | / \ | # \ / \ / # \________/ \_________/ # # # BUTTON Function # L1 Disable Obstacles # L2 Not defined # R1 Enable Obstacles # R2 Not defined # A Stop enable # B Stop release # X Manual control # Y Autonomy control # # AXIS Value # Left Horiz. Not defined # Left Vert. Forward/Backward # Right Horiz. Yaw # Right Vert. Not defined ``` ### Exploration planning Start the exploration using the following commands by calling the rc cmd topic. ``` rosservice call /buzzcmd "{broadcast: false, command: 1, confirmation: 0, param1: 0.0, param2: 0.0, param3: 0.0, param4: 0.0, param5: 0.0, param6: 0.0, param7: 0.0}" ``` The command can be replaced with any of the following to switch the state of the robot: ``` No_cmd = 0 Turnoff_cmd = 21 Explore_cmd = 1 Home_cmd = 2 Wp_cmd = 3 Find_object_cmd = 4 # Not Implemented Sit_cmd = 5 Stand_cmd = 6 Dance_cmd = 7 # Not Implemented all_robots_explore_cmd = 8 # Not Implemented all_robots_home_cmd = 9 # Not Implemented ``` ### Troubleshooting 1. Robot too close to Obstacles: If the robot gets too close the planner states clear the space around the robot. Ideally one can take back control and move the robot a little bit to resolve the warning and re-enable exploration. 2. Planner unable to find feasible path: Either try moving the robot, switch to turnedoff and back to explore, Move the robot a bit in the prefered direction and switch state -> turnedoff -> explore. 3. Robot connection bad: Restart the communication hub radios `radio0` from luci. 4. Rover driver not starting (ROSBuzz complaining Waiting for pose): check if the can bus is up and sending data using: `candump can0`, if not bring it up and using `bringup can` script from the driver package. Some robots have a service setup check sudo systemctl status bringupcan.service 5. Vector nav driver not starting: check the /dev/vectornav or /dev/USB0 is there based on the device.