Git Product home page Git Product logo

c3pzero's Introduction

Hi ๐Ÿ‘‹, I'm Griswald Brooks (he/him)

I work on robotics software, mostly mobile bases. CppCon 2023 Robotics Track Chair.

๐Ÿ“ข Talks

๐Ÿง‘โ€๐Ÿ’ป Contact Me

I am looking for mentoring for giving talks at programming language meetups and conferences.

c3pzero's People

Contributors

griswaldbrooks avatar marqrazz avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

c3pzero's Issues

Container hostname should be in /etc/hosts file

Use Case

To update ros and do other network operations, the hostname of the container should be in it's /etc/hosts file.

Acceptance Criteria

GIVEN the development container has just been launched
WHEN more /etc/hosts is run
THEN the hostname of the container will appear and be associated to localhost/127.0.0.1

Notes

Not sure how to do this but it could require changes to the run.sh script.

Roboclaw ROS2 Driver

Use Case

In order to navigate in ROS2, there must be a ROS2 driver.

Acceptance Criteria

GIVEN an integrated mobile base running ROS2
WHEN publishing to the cmd_vel topic
THEN the robot will move at the commanded rate.

Notes

Test ROS1 driver

Use Case

Before porting code, it's a good idea to verify that it works, in case it doesn't and for something to compare to later.

Acceptance Criteria

GIVEN a tuned roboclaw and motors with encoders
AND the ROS1 driver is running
WHEN publishing to cmd_vel
THEN the motor should turn at the commanded rate

Notes

In ROS1, on the command line you can type

# rostopic 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}}'

to send a velocity at 10 Hz.
The driver will try to command a differential drive base and not an individual motor, so if only one motor is available, some squinting might be invloved.

Motor Controller Integration

Use Case

Motor controller hardware needs to be tested with the motors to verify functionality.

Acceptance Criteria

GIVEN the motor controller is integrated with a charged mobile base
WHEN we command the individual motors
THEN the wheels will spin at the commanded rate.

Notes

For development, there is an extra roboclaw that won't be attached to the robot.
This epic does not cover integration with nav2.
Using RoboClaw ST 2x45A Motor Controller
Manual http://downloads.basicmicro.com/docs/roboclaw_user_manual.pdf
Downloads and links https://www.basicmicro.com/downloads

Create ROS2 package

Use Case

There needs to be a place to store custom configurations and code.

Acceptance Criteria

GIVEN a developer
WHEN we want to contribute to c3pzero
THEN there will be a existing package to make contributions to.

Notes

Use https://github.com/ros-planning/navigation2_tutorials/tree/master/sam_bot_description as a starting point and rename everything.

Possibly improvements would be to have a meta package and a bringup package but we can make those determinations when we come to them.

Electrically attach motor controller to mobile base

Use Case

In order to drive the robot, the motors, encoders, and batteries need to be connected to the motor controller.

Acceptance Criteria

GIVEN the mobile base and roboclaw
WHEN we want to test driving the robot
THEN the required components will be connected
AND smoke tested.

Notes

https://resources.basicmicro.com/roboclaw-basics/
https://resources.basicmicro.com/pololu-encoder-wiring/
https://resources.basicmicro.com/dual-channel-roboclaw-quick-start-guide/

Bringup Nav2

Use Case

Before integrating nav2 with the hardware there are a number of required configuration steps that can be done first.

Acceptance Criteria

GIVEN an integrated mobile base
WHEN we want to navigate
THEN a bringup launch file and repo will be available

Notes

Port ROS1 driver to ROS2

Use Case

As we're trying to use nav2, we need to have a ROS2 driver.

Acceptance Criteria

GIVEN a tuned roboclaw and motors with encoders
AND the ROS2 driver is running
WHEN publishing to cmd_vel
THEN the motor should turn at the commanded rate

Notes

If we publish this driver, we should publicly attribute who we ported it from, as we shouldn't be changing it to much in this phase.
Long term though (if there is such a thing) the code base would likely diverge.

[SPIKE] Survey porting options

Use Case

A number of python based ROS1 drivers exist for the roboclaw.
One of them needs to be chosen for porting as we're not developing from scratch.

Acceptance Criteria

GIVEN we have ported a roboclaw driver
WHEN we want to know why a particular ROS1 driver was chosen
THEN this ticket will briefly discuss the reviewed options
AND why that one was chosen.

Notes

Official driver https://github.com/sonyccd/roboclaw_ros
4-wheel version https://github.com/sheaffej/roboclaw_driver
SV-ROS version https://github.com/SV-ROS/roboclaw_driver

Verify motor controllers on bench

Use Case

Motor controller needs to be verified before being integrated, in case the units don't work.

Acceptance Criteria

GIVEN developers want to drive a dc motor
WHEN they want to use the roboclaw
THEN there will be known good hardware to use.

Notes

Both controllers need to be tested.

Tyler has a Windows computer for installing Motion Studio and a variable DC power supply
Jack has DC gearmotors with built-in quadrature encoders to test with.
The below tutorial reviews actuating the motors as well as reading the encoders.

Resources
https://resources.basicmicro.com/roboclaw-basics/
https://resources.basicmicro.com/dual-channel-roboclaw-quick-start-guide/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.