{"id":15532905,"url":"https://github.com/matham/robo_nav","last_synced_at":"2025-04-09T10:14:50.576Z","repository":{"id":72772153,"uuid":"156638135","full_name":"matham/robo_nav","owner":"matham","description":"Cornell MAE6710 Fa2018 project","archived":false,"fork":false,"pushed_at":"2018-12-14T22:09:30.000Z","size":31991,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-15T04:26:11.762Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/matham.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-11-08T02:23:33.000Z","updated_at":"2019-12-13T09:45:20.000Z","dependencies_parsed_at":"2023-02-28T00:01:26.786Z","dependency_job_id":null,"html_url":"https://github.com/matham/robo_nav","commit_stats":{"total_commits":172,"total_committers":13,"mean_commits":13.23076923076923,"dds":"0.39534883720930236","last_synced_commit":"33fac5265703a61e4e835e9fea2c279985a3a7e4"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matham%2Frobo_nav","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matham%2Frobo_nav/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matham%2Frobo_nav/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matham%2Frobo_nav/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matham","download_url":"https://codeload.github.com/matham/robo_nav/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248018070,"owners_count":21034048,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-02T11:33:48.284Z","updated_at":"2025-04-09T10:14:50.543Z","avatar_url":"https://github.com/matham.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"Robo Nav project MEA something\n===================================\n\nTested on kinetic\n\nTo Install\n-----------\n```sh\ncd ~\nmkdir -p catkin_ws_robo/src\ncd catkin_ws_robo/src\n\ngit clone https://github.com/matham/robo_nav.git\ngit clone https://github.com/matham/people.git\ngit clone https://github.com/marinaKollmitz/lattice_planner.git\ngit clone https://github.com/marinaKollmitz/human_aware_navigation.git\ngit clone https://github.com/marinaKollmitz/timed_path_follower.git\ngit clone https://github.com/DLu/wu_ros_tools.git\n\ncd ..\nrosdep update\nrosdep install --from-paths src -i\ncatkin_make\n```\n\nUpdate Gazebo\n--------------\nFollow the instructions here to install the latest version Gazebo 7:\nhttp://gazebosim.org/tutorials?cat=install\u0026tut=install_ubuntu\u0026ver=7.0#Alternativeinstallation:step-by-step\n\nTo enable the VM to use the graphics card:\n```sh\necho \"export SVGA_VGPU10=0\" \u003e\u003e ~/.bashrc\nsource ~/.bashrc\n```\n\n\nTo run\n------------\nTo start gazebo with a world, in one terminal start ros with\n```sh\nsource devel/setup.bash\nroslaunch ca_gazebo create_2.launch\n```\n\nOr if you'll be using the turtle world run\n```sh\nexport ROBOT_INITIAL_POSE=\"-x 6.0 -y -5.0 -z 0.0\"\nexport TURTLEBOT_GAZEBO_WORLD_FILE=/opt/ros/kinetic/share/turtlebot_gazebo/worlds/playground.world\nroslaunch turtlebot_gazebo turtlebot_world.launch\n```\n\nTo start the navigation system, in another terminal do\n```sh\nsource devel/setup.bash\nroslaunch human_aware_nav_launch navigation.launch\n```\n\nTo make the robot move manually, in another terminal run\n```sh\nsource devel/setup.bash\nrostopic pub -r 10 /cmd_vel geometry_msgs/Twist '{linear: {x: 0.1, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.0}}'\n```\n\nor to run the project code run in a second terminal to see the robot move\n```sh\nsource devel/setup.bash\nrosrun ca_robo_nav main.py\n```\n\nThe main project code is in `catkin_ws_robo/src/robo_nav/ca_robo_nav/src/`.\n\n\n\n\n# create_autonomy\n\n[ROS](http://ros.org) driver for iRobot [Create 1 and 2](http://www.irobot.com/About-iRobot/STEM/Create-2.aspx).\nThis package wraps the C++ library [libcreate][libcreate], which uses iRobot's [Open Interface Specification][oi_spec].\n\n\u003c!--[](* Documentation: TODO)--\u003e\n* ROS wiki page: http://wiki.ros.org/create_autonomy\n* Support: [ROS Answers (tag: create_autonomy)](http://answers.ros.org/questions/scope:all/sort:activity-desc/tags:create_autonomy/page:1/)\n* Author: [Jacob Perron](http://jacobperron.ca) ([Autonomy Lab](http://autonomylab.org), [Simon Fraser University](http://www.sfu.ca))\n\n## Build Status\n\nTravisCI (Ubuntu _Trusty_, ROS _Indigo_ and _Jade_)  \n![Build Status](https://api.travis-ci.org/AutonomyLab/create_autonomy.svg?branch=indigo-devel)\n\n## Supported Robots\n\n| Model     | Support    |\n|-----------|------------|\n| Create 1  |  Yes       |\n| Create 2  _(firmware \u003e= 3.2.6)_ |  Yes       |\n| Roomba Original Series | No  |\n| Roomba 400 Series |  Yes  |\n| Roomba 500 Series |  Yes *  |\n| Roomba 600 Series |  Yes * |\n| Roomba 700 Series |  Yes +  |\n| Roomba 800 Series |  Yes + |\n| Roomba 900 Series |  No *  |\n\n_+ Verified by third-party. Please note [Odometry Issue #28](https://github.com/AutonomyLab/create_autonomy/issues/32)_  \n_* Not verified. Anyone who is able to verify that this driver works or not is encouraged to contact [Jacob](https://jacobperron.ca) with their findings or open an issue._\n\n## Features\n\n|  Feature          |  Status       |\n|-------------------|---------------|\n|  Odometry         | Available     |\n|  Safe mode        | Planned [#13](https://github.com/AutonomyLab/create_autonomy/issues/13) |\n|  Clean demo       | Planned [#14](https://github.com/AutonomyLab/create_autonomy/issues/14) |\n|  Dock demo        | Available     |\n|  Drive wheels     | N/A           |\n|  Drive (v,w)      | Available     |\n|  Brush motors     | Planned [#15](https://github.com/AutonomyLab/create_autonomy/issues/15) |\n|  LEDs             | Available     |\n|  Digit LEDs       | Available     |\n|  Sound            | Available     |\n|  Wheeldrop        | Available     |\n|  Bumpers          | Available     |\n|  Cliff sensor     | Planned [#22](https://github.com/AutonomyLab/create_autonomy/issues/22)      |\n|  Dirt detect      | N/A           |\n|  Omni IR sensor   | Available     |\n|  Left IR sensor   | N/A           |\n|  Right IR sensor  | N/A           |\n|  Battery info     | Available     |\n|  Light sensors    | Available     |\n| **_Diagnostics_** |               |\n|  Corrupt packets  | Planned       |\n|  Physical tests   | Planned       |\n|  Overcurrent info | Planned       |\n\n## Install\n\n#### Prerequisites\n\n* Internet connection\n* [ROS](http://wiki.ros.org/ROS/Installation) _Indigo_ or _Jade_\n* Ubuntu packages: `python-rosdep`, `python-catkin-tools`\n\n``` bash\n$ sudo apt-get install python-rosdep python-catkin-tools\n```\n\n#### Compiling\n\n1. Create a catkin workspace  \n    ``` bash\n    $ cd ~\n    $ mkdir -p create_ws/src  \n    $ cd create_ws  \n    $ catkin init  \n    ```\n\n2. Clone this repo  \n    ``` bash\n    $ cd ~/create_ws/src\n    $ git clone https://github.com/AutonomyLab/create_autonomy.git  \n    ```\n  \n3. Install dependencies  \n    ``` bash\n    $ cd ~/create_ws\n    $ rosdep update  \n    $ rosdep install --from-paths src -i  \n    ```\n\n4. Build  \n    ``` bash\n    $ cd ~/create_ws\n    $ catkin build\n    ```\n#### USB Permissions\n5. In order to connect to Create over USB, ensure your user is in the dialout group\n    ``` bash\n    $ sudo usermod -a -G dialout $USER\n    ```\n\n6. Logout and login for permission to take effect\n\n## Running the driver\n\n### Setup\n\n1. After compiling from source, don't forget to source your workspace:  \n    ``` bash\n    $ source ~/create_ws/devel/setup.bash\n    ```\n\n2. Connect computer to Create's 7-pin serial port\n  - If using Create 1, ensure that nothing is connected to Create's DB-25 port\n\n3. Launch one of the existing launch files or adapt them to create your own.\n\n### Launch files\n\nFor Create 2 (Roomba 600/700 series):\n``` bash\n$ roslaunch ca_driver create_2.launch\n```\n\nFor Create 1 (Roomba 500 series):\n``` bash\n$ roslaunch ca_driver create_1.launch\n```\n\nFor Roomba 400 series:\n``` bash\n$ roslaunch ca_driver roomba_400.launch\n```\n\nFor Create 2 Gazebo simulation:\n``` bash\n$ roslaunch ca_gazebo create_2.launch\n```\n\n#### Launch file arguments\n\n* **config** - Absolute path to a configuration file (YAML). Default: `ca_driver/config/default.yaml`\n* **desc** - Enable robot description (URDF/mesh). Default: `true`\n\nFor example, if you would like to disable the robot description and provide a custom configuration file:\n\n```bash\n$ roslaunch ca_driver create_2.launch config:=/abs/path/to/config.yaml desc:=false\n```\n\n### Parameters\n\n Name         |  Description |  Default\n--------------|--------------|----------\n`dev`         |  Device path of robot |  `/dev/ttyUSB0`\n`base_frame`  |  The robot's base frame ID | `base_footprint`\n`odom_frame`  |  The robot's odometry frame ID | `odom`\n`latch_cmd_duration` | If this many seconds passes without receiving a velocity command the robot stops | `0.2`\n`loop_hz`     |  Frequency of internal update loop |  `10.0`\n`publish_tf`  |  Publish the transform from `odom_frame` to `base_frame` | `true`  \n`robot_model` |  The type of robot being controlled (supported values: `ROOMBA_400`, `CREATE_1` and `CREATE_2`) | `CREATE_2`\n`baud`        |  Serial baud rate | Inferred based on robot model, but is overwritten upon providing a value\n\n### Publishers\n\n Topic       | Description  | Type\n-------------|--------------|------\n `battery/capacity` | The estimated charge capacity of the robot's battery (Ah) | [std_msgs/Float32][float32]\n `battery/charge` | The current charge of the robot's battery (Ah) | [std_msgs/Float32][float32]\n `battery/charge_ratio` | Charge / capacity | [std_msgs/Float32][float32]\n `battery/charging_state` | The chargins state of the battery | [ca_msgs/ChargingState][chargingstate_msg]\n `battery/current` | Current flowing through the robot's battery (A). Positive current implies charging | [std_msgs/Float32][float32]\n `battery/temperature` | The temperature of the robot's battery (degrees Celsius) | [std_msgs/Int16][int16]\n `battery/voltage` | Voltage of the robot's battery (V) | [std_msgs/Float32][float32]\n `bumper` | Bumper state message (including light sensors on bumpers) | [ca_msgs/Bumper][bumper_msg]\n `clean_button` | 'clean' button is pressed ('play' button for Create 1) | [std_msgs/Empty][empty]\n `day_button` |  'day' button is pressed | [std_msgs/Empty][empty]\n `hour_button` | 'hour' button is pressed | [std_msgs/Empty][empty]\n `minute_button` | 'minute' button is pressed | [std_msgs/Empty][empty]\n `dock_button` | 'dock' button is pressed ('advance' button for Create 1) | [std_msgs/Empty][empty]\n `spot_button` | 'spot' button is pressed | [std_msgs/Empty][empty]\n `ir_omni` | The IR character currently being read by the omnidirectional receiver. Value 0 means no character is being received | [std_msgs/UInt16][uint16]\n `joint_states` | The states (position, velocity) of the drive wheel joints | [sensor_msgs/JointState][jointstate_msg]\n `mode` | The current mode of the robot (See [OI Spec][oi_spec] for details)| [ca_msgs/Mode][mode_msg]\n `odom` |  Robot odometry according to wheel encoders | [nav_msgs/Odometry][odometry]\n `wheeldrop` | At least one of the drive wheels has dropped | [std_msgs/Empty][empty]\n `/tf` | The transform from the `odom` frame to `base_footprint`. Only if the parameter `publish_tf` is `true` | [tf2_msgs/TFMessage](http://docs.ros.org/jade/api/tf2_msgs/html/msg/TFMessage.html)\n\n\n### Subscribers\n\nTopic       | Description   | Type\n------------|---------------|------\n`cmd_vel` | Drives the robot's wheels according to a forward and angular velocity | [geometry_msgs/Twist][twist]\n`debris_led` | Enable / disable the blue 'debris' LED | [std_msgs/Bool][bool]\n`spot_led`   | Enable / disable the 'spot' LED | [std_msgs/Bool][bool]\n`dock_led`   | Enable / disable the 'dock' LED | [std_msgs/Bool][bool]\n`check_led`  | Enable / disable the 'check robot` LED | [std_msgs/Bool][bool]\n`power_led`  | Set the 'power' LED color and intensity. Accepts 1 or 2 bytes, the first represents the color between green (0) and red (255) and the second (optional) represents the intensity with brightest setting as default (255) | [std_msgs/UInt8MultiArray][uint8multiarray]\n`set_ascii` | Sets the 4 digit LEDs. Accepts 1 to 4 bytes, each representing an ASCII character to be displayed from left to right | [std_msgs/UInt8MultiArray][uint8multiarray]\n`dock` | Activates the demo docking behaviour. Robot enters _Passive_ mode meaning the user loses control (See [OI Spec][oi_spec]) | [std_msgs/Empty][empty]\n`undock` | Switches robot to _Full_ mode giving control back to the user | [std_msgs/Empty][empty]\n`define_song` | Define a song with up to 16 notes. Each note is described by a MIDI note number and a float32 duration in seconds. The longest duration is 255/64 seconds. You can define up to 4 songs (See [OI Spec][oi_spec]) | [ca_msgs/DefineSong][definesong_msg]\n`play_song` | Play a predefined song | [ca_msgs/PlaySong][playsong_msg]\n\n## Commanding your Create\n\nYou can move the robot around by sending [geometry_msgs/Twist][twist] messages to the topic `cmd_vel`:\n\n```\nlinear.x  (+)     Move forward (m/s)\n          (-)     Move backward (m/s)\nangular.z (+)     Rotate counter-clockwise (rad/s)\n          (-)     Rotate clockwise (rad/s)\n```\n#### Velocity limits\n\n` -0.5 \u003c= linear.x \u003c= 0.5` and `-4.25 \u003c= angular.z \u003c= 4.25`\n\n### Teleoperation\n\n`ca_tools` comes with a launch file for teleoperating Create with a joystick.\n\n``` bash\n$ roslaunch ca_tools joy_teleop.launch [joy_config:=xbox360]\n```\n\nThere exists configuration files for the [Xbox 360 wired controller](https://www.amazon.ca/Microsoft-Xbox-360-Wired-Controller/dp/B003ZSN600) and the [Logitech F710 controller](http://gaming.logitech.com/en-ca/product/f710-wireless-gamepad). You can adapt these files for your preferred joystick configuration.\n\n## Contributions\n\nContributing to the development and maintenance of _create\\_autonomy_ is encouraged. Feel free to open issues or create pull requests on [GitHub](https://github.com/AutonomyLab/create_autonomy).\n\n### Contributors\n\n* [Michael Browne](http://brownem.engineer/)\n    - Confirms driver works with Roomba 700 and 800 series.\n* [Clyde McQueen](https://github.com/clydemcqueen)\n    - Added support for sound ([#37](https://github.com/AutonomyLab/create_autonomy/pull/37)).\n* [Ben Wolsieffer](https://github.com/lopsided98) \n    - Added JointState publisher for wheels ([#26](https://github.com/AutonomyLab/create_autonomy/pull/26)).\n    - Added Create 1 description ([#27](https://github.com/AutonomyLab/create_autonomy/pull/27)).\n\n[libcreate]:  https://github.com/AutonomyLab/libcreate\n[oi_spec]:  https://www.adafruit.com/datasheets/create_2_Open_Interface_Spec.pdf\n[odometry]:  http://docs.ros.org/api/nav_msgs/html/msg/Odometry.html\n[empty]:  http://docs.ros.org/api/std_msgs/html/msg/Empty.html\n[uint16]:  http://docs.ros.org/api/std_msgs/html/msg/UInt16.html\n[int16]:  http://docs.ros.org/api/std_msgs/html/msg/Int16.html\n[twist]:  http://docs.ros.org/api/geometry_msgs/html/msg/Twist.html\n[bool]:  http://docs.ros.org/api/std_msgs/html/msg/Bool.html\n[uint8multiarray]:  http://docs.ros.org/api/std_msgs/html/msg/UInt8MultiArray.html\n[float32]:  http://docs.ros.org/api/std_msgs/html/msg/Float32.html\n[ca_msgs]:  http://github.com/AutonomyLab/create_autonomy/tree/indigo-devel\n[bumper_msg]:  https://github.com/AutonomyLab/create_autonomy/blob/indigo-devel/ca_msgs/msg/Bumper.msg\n[mode_msg]:  https://github.com/AutonomyLab/create_autonomy/blob/indigo-devel/ca_msgs/msg/Mode.msg\n[chargingstate_msg]:  https://github.com/AutonomyLab/create_autonomy/blob/indigo-devel/ca_msgs/msg/ChargingState.msg\n[jointstate_msg]:  http://docs.ros.org/api/sensor_msgs/html/msg/JointState.html\n[definesong_msg]:  https://github.com/AutonomyLab/create_autonomy/blob/indigo-devel/ca_msgs/msg/DefineSong.msg\n[playsong_msg]:  https://github.com/AutonomyLab/create_autonomy/blob/indigo-devel/ca_msgs/msg/PlaySong.msg\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatham%2Frobo_nav","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatham%2Frobo_nav","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatham%2Frobo_nav/lists"}