/p5_beta

Jinx desired state publisher

Primary LanguageC++

Problem set 5, group beta

Assignment on trajectory planning for PS5 and PS6. It demonstrates the following behaviors:

  • graceful halt from LIDAR alarm
  • graceful recovery from LIDAR alarm
  • graceful recovery from wireless E-stop
  • ability to execute open-loop control corresponding to a prescribed polyline path
  • ability to append subgoal poses to a prescribed path plan
  • ability to flush a path plan and replace it

Also included in this submission are three videos, one of the Gazebo simulation, one of the robot running on the rollers, and one of the robot moving from a spot near the elevator in the hallway outside the lab to a spot near the vending machines.

Example usage

General

To send the emergency stop, run rosservice call /estop_service. A more complete listing of available service calls can be seen below:

/clear_estop_service
/estop_service
/flush_path_queue_service

In addition to these three trigger-based services, there is also a fourth that requires an argument. /append_path_queue_service can be called from a node. That node, append_path_client, accepts as arguments stop, clear, flush, or append x y th, where the last three arguments are the desired X, Y, and yaw values (in meters and radians, respectively). Multiple such triplets can be specified at once, in x1 y1 th1 x2 y2 th2 ... order. If no arguments beyond the initial append are provided, a default path tracing out a square will be assumed. stop and clear are provided as easy mnemonics for the estop services, and flush will clear paths that have not yet been executed.

Gazebo specific

Executing the following Gazebo-based launch file will bring up an instance of Gazebo complete with a mobot, a LIDAR obstacle detector, and an open-loop controller. The second command will allow one to use the included services, detailed in the General section. The robot will move 5 meters forward and 5 meters backward.

$ roslaunch p5_beta load_world_and_controller.launch
$ rosrun p5_beta des_state_publisher

Jinx specific

Executing the following launch file will start the jinx open-loop controller, a LIDAR obstacle detector, and topic re-mapping. The second command will allow one to use the included services, detailed in the General section. The robot will move from the elevator to the vending machine.

$ roslaunch p5_beta jinx_controller.launch
$ rosrun p5_beta des_state_publisher jinx