Giter Club home page Giter Club logo

andino's People

Contributors

agalbachicar avatar barcelochristian avatar elector102 avatar francocipollone avatar garyservin avatar idavgal avatar jballoffet avatar jesussilvautrera avatar lneumarkt avatar manzato avatar olmerg avatar stevendes avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

andino's Issues

[Hardware] Robot assembly

Summary

General goal: Build one(two if possible) robots.

To have in mind

  • Each smart car kit contains a single chassis. We printed some extra chassis in order to build a two stories robots.
  • While assembling it, it is recommended to take some pictures in order to later on document the process.
  • Keep in mind wiring diagrams to better explain how things are expected to be connected: Pins from the arduino to be used will be decided between hardware and firmware responsables.
  • We could create for example a carpincho_assembly folder for everything related to the assembly and documentation related.

General notes

[Software] Create software documentation

Summary

Good SW docs needs to be written so as to allow new CarpinchoBots to be built.

Definition of done

Create a markdown document including:

  • ROS packages description
  • Installation/setup steps
  • HW interfaces
  • ROS graphs

[URDF] Wheel Axis are not aligned with base_link

Summary

The current implementation of the Carpincho URDF has an offset between base_link and the front_right_wheel and front_left_wheel axis, this influences localization since the robot movement also gets affected by that offset.

The fix would be to modify the position of base_link to be between the wheels, sharing the same axis.

Screenshot from 2023-04-09 15-24-38
View of the base_link and the wheels

Definition of done

  • Carpincho URDF file updated with the correct values.

[Firmware] Setup base project

Summary

This tasks involves developing a base project for the robot firmware.

Basic structure:

  • include
  • lib
  • src
  • test

Configuring PlatformIO or a similar framework to be able to develop using VSCode instead of specific IDEs is desired.

Definition of done

  • Base project is created and it can be built, downloaded and a test can be executed.

[andino_base] Creates test for verifying ros hardware interface implementation

Summary

Adding test coverage makes the code more robust.
We could mock the microcontroller in order to provide some tests that guarantee that the hardware interface is working correctly.

Definition of done

  • Provide a testing node that mocks the interaction with the microcontroller (two/three topics, for JointStates and joint velocities)
  • Add a test for verifying a correct behavior.

[Firmware] Software design

Summary

This tasks involves designing the firmware solution in terms of classes and their interactions.

Definition of done

  • Software is designed.
  • Header files (and perhaps diagrams if required) are developed.
  • Source files w/o inner implementation are developed.

[Hardware] Create hardware documentation

Summary

Good HW docs needs to be written so as to allow new CarpinchoBots to be built.

Definition of done

Create a markdown document including:

  • Assembly steps
  • BOM
  • HW diagram
  • Electrical diagram
  • Models for 3D printing

Set up Nav2

Summary

Enable nav2 navigation in Andino.

Suggestions

  • Provide an andino_navigation package.
  • Provide a basic launch file to bring up nav2: Check nav2_bringup launch file.
    • A configuration file is expected to be added to a config folder within the package for setting up different nav2's systems and to be loaded by the launch file.
    • Probably some topics in Andino/Nav2 should be remapped (or relayed)

Extras

https://arxiv.org/abs/2307.15236

Add PlatformIO support

Desired behavior

Add PlatformIO support to be able to build and upload the firmware using Visual Studio Code (by using the PlatformIO extension). Among other things, some advantages from doing so would be:

  • No further need to install the Arduino IDE.
  • Allows to add unit testing.
  • Allows to support development boards other than Arduino.

Arduino IDE support for building and uploading the code shall remain as an easy and straightforward option to do so.

Add firmware unit tests

Desired behavior

Unit tests shall be added to ensure regressions don't take place as the code evolves.

Define CODEOWNERS

This issue require us to define who are the code owners of the project and who are responsible for approving PRs.

Wheel size does not match description/controller

Environment

  • OS Version:
  • Source or binary build?

Description

  • Expected behavior:
    • Wheel size is defined the same across all the stack
  • Actual behavior:
    • Wheel Diameter is defined to 0.035 for Gazebo's diff drive plugin (here)
    • Wheel Radius is defined to 0.0331 (here)

[Description] Improve robot description

Summary

  • The robot description we are using is also one level while the real robot is expected to have two levels

Definition of done

  • Replicate the real robot:
    • Add a new level

Provide a gazebo simulation

Context

We already have a gazebo simulation at noetic branch but it was an old implementation. The urdf description way different than the current one.

Summary

  • Create gazebo ROS2 simulation
  • Gracefully deal with urdf descriptions for:
    • real robot (ros2_control)
    • simulation using ros2_control
    • simulation using diff_drive plugin. (long shot, might not be necessary)

Notes

  • an andino_gazebo package is expected to be created
  • I expect no gazebo references to andino_description's urdf description. Gazebo references should be part of the andino_gazebo package.

Wrong xacro:if/unless definition for wheel's mesh

Description

  • Expected behavior:
    • A single mesh is added to wheels, with different directives depending if scale is defined or not
  • Actual behavior:
    • Meshes are added twice if scale is not defined

Steps to reproduce

  1. Transpile Andino's xacro, and check the wheels' mesh field.

Remove carpincho references

After a quick search throughout the repository, I've found some references to the previous name.

This task require us to rename those references in favor of the new name andino.

Improve firmware code base

Desired behavior

Firmware code base shall be improved so as to ease its maintenance, decouple logic and drivers code (to ease the process of using a different dev board / microcontroller) and add unit tests.

[Firmware] Create firmware documentation

Summary

Good FW docs needs to be written so as to allow new CarpinchoBots to be built.

Definition of done

Create a markdown document including:

  • FW diagram
  • Installation steps
  • Pinout diagrams
  • HW interfaces

Caster wheel have a wrong behavior

Environment

  • OS Version: 22.04
  • Source

Description

  • Expected behavior: robot moving regarding command vels
  • Actual behavior: caster wheel is stuck and don't move correctly

Steps to reproduce

  1. Run Andino simulation on empty world,
  2. move the robot and rotate.

Output

robot movement on gazebo is not regarding with the command vels. I will fix that commands

[infra] Update main README

Summary

The main Readme should work as an entry point to the entire project and documentation
The readme is expected to be improved over time as the project evolves.
For so here there is a list of things to tackle:

Requirements

  • General description of carpincho project and motivation
  • Installation process
  • Hardware description
  • Packages description/ repo organization

[Simulation] Gazebo ROS control crashes the robot

Summary

Using Gazebo ROS Control with the current robot configuration sometimes crashes the robot under specific movements, high values for the PID, or high-velocity commands being sent.

227820811-9ccda818-f486-4715-bd65-88ecee9d62de

Different mass values improve the behavior, indicating that it could be an issue with the Inertia values and how Gazebo ROS control interacts.

Definition of done

  • Gazebo ROS control works as expected.

Add Collaborate section

This issue require us to set up a few guidelines on how to collaborate in andino. If we're creating an open source project, we should enable other developers to collaborate.

[Firmware] Develop communication module

Summary

This tasks involves developing the firmware communication module that allows the communication between the microcontroller and the Raspberry Pi. ROS Serial over the USB port will be used to that end.

Definition of done

  • Module is developed along with the required tests.

[Firmware] Develop motor control module

Summary

Motor needs to be controlled properly in order to guarantee later on good teleoperation and odometry readings.

  • Inputs
    • Motor encoders
  • Outputs
    • PWM signal to the L289 for motor control
      • PID controller should be set up for guaranteeing a correct motor driver.

General notes

Definition of done

  • Define diagram connection between microcontroller - HBridge - Motor&Encoders
  • Control motor velocity: It is expected to read the encoders in order to guarantee the correct velocity (radianxsec) for the motors.
  • Encoder readings: Properly read encoder Information for calculating indirect info like current position and velocity of the motors .
  • Add proper documentation:
    • Notes on design
    • Diagrams
  • Testing

[Simulation] Create simulation

Summary

Some notes:

  • Having a simulation is positive to simulate the navigation stack.
  • Carpincho's software is using ros_control, meaning that the simulation is expected to match with these interface.
  • There are two simulator targeted:
    • Gazebo: In general, for better integration with ros community, adding a simulation using gazebo might sound like the best approach
    • Webots: More performant and realistic(visual) sim than gazebo. Pretty used. We can push the simulation to the webots repos and the carpincho will be an integrated example in the Webots simulator (as of next release)

Definition of done

  • Simulate model: Conversion from urdf to underlying simulator format
  • Controller/Plugin set up: In order to properly simulate as a diff drive robot with the sensors that it has.
  • Ros integration: It is mandatory to interface with ros.

[Infra] Set up base repository

Summary

The idea is to build up a well-documented, user-friendly, easy-to-use public repository. Where best practices are used in order to ease the way to new-into-robotics people and to serve as a demo/advertising of the company.

  • Put everything together in a single open-sourced repository.
  • Divide and conquer: provide several packages to tackle different aspects:
    • carpinchobot_description: containing the robot model.
    • carpinchobot_control: configurations for the diff_drive_controller of ROS Control used in Gazebo simulation and the real robot.
    • carpinchobot_navigation: to set up the navigation stack.
    • carpinchobot_slam: For performing slam with the carpinchobot.
    • carpinchobot_bringup: Containing launch files for bringing up the carpinchobot in the real robot.
    • carpinchobot_simulation: simulation of the carpinchobot
    • Etc.
      Documentation for the win.

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.