Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main'
Browse files Browse the repository at this point in the history
  • Loading branch information
jkaflik committed Sep 14, 2023
2 parents f470dec + 5bcaefa commit 94a9f5f
Show file tree
Hide file tree
Showing 8 changed files with 91 additions and 60 deletions.
3 changes: 3 additions & 0 deletions docs/.vitepress/config.mts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ export default withMermaid({
{
text: 'Getting started',
link: '/getting-started',
items: [
{ text: 'Roadmap', link: '/roadmap' },
],
},
{
text: 'Components explained',
Expand Down
4 changes: 2 additions & 2 deletions docs/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ This section is not complete yet. It will be updated as the project progresses.
- :white_check_mark: GPS
- :construction: Simulation using Gazebo

### Planned
### Roadmap

The list of identified missing features or enhancements can be found in GitHub [issues](https://github.com/jkaflik/OpenMowerROS2/issues).
What was already said, the project is in early development stage. Please get familiar with [Roadmap](roadmap) to get an idea of what is planned for the future.

## Requirements

Expand Down
53 changes: 53 additions & 0 deletions docs/roadmap.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
---
title: Roadmap
---
# {{ $frontmatter.title }}

## Introduction

As mentioned in [Getting started](getting-started.md), the project is mostly for my own learning purposes. I am not sure how far I will get with it, but I will try to keep it up to date.

I want to share it with others, so also I want to make it clear what is the current state of the project and what is planned for the future. (what I can afford myself to plan given it's a hobby project)

## Roadmap

```mermaid
timeline
spring 2024: feature parity with open_mower_ros
summer 2024: modularity
later 2024: additional sensors
later: more fancy stuff
```

### Feature parity with open_mower_ros

I'd like to focus first on making sure everyone who is OpenMower user can use OpenMowerROS2 as a drop-in replacement for open_mower_ros.

This definitely means implementing all the features that are already implemented in open_mower_ros, but done in a different way.

Compatibility with all side projects that are using open_mower_ros is not expected. For example, Mowgli or OpenMowerGUI are not in the scope of this project.

### Modularity

What if we have a modular system that can be used with other hardware as well?
One of the closest examples would be a Mowgli compatible hardware layer. What about other YardForce or similar mowers?

### Additional sensors

It does not limit to base mower only. What about other sensors?

### More fancy stuff
What about other capabilities? Your robot could be a mower, but also be responsible for other garden chores.

## GitHub issues

All the work is tracked in [GitHub issues](https://github.com/jkaflik/OpenMowerROS2/issues):

- Feature parity issues can be [filter out with feature-parity label](https://github.com/jkaflik/OpenMowerROS2/issues?q=is%3Aopen+is%3Aissue+label%3Afeature-parity). Not all gaps are identified yet.
- Future improvements are tracked with [future-ideas label](https://github.com/jkaflik/OpenMowerROS2/issues?q=is%3Aopen+is%3Aissue+label%3Afuture-ideas).

Feel free to add your own.

## Conclusion

All this stuff is not going to happen overnight. It will take time. It can stay as a hobby project, or it can grow into something bigger. [It's up to you](contributing).
38 changes: 21 additions & 17 deletions src/openmower/config/hardware/yardforce500.yaml
Original file line number Diff line number Diff line change
@@ -1,23 +1,25 @@
chassis:
# x, y, z offset in m of chassis from center of robot
offset: [-0.1, 0.0, -0.05]
offset: [-0.1, 0.0, -0.035] # m

# width, height, length of chassis in m
width: 0.325
height: 0.10
length: 0.6
width: 0.325 #m
height: 0.15 # m
length: 0.55 # m

mass: 10 # kg

mower:
# x, y, z offset in m of mower from center of robot
offset: [0.15, 0.0, -0.001]
offset: [0.18, 0.0, -0.06] #m

# mower blades cut radius in m when spinning
cut_radius: 0.065
cut_radius: 0.065 # m

# thickness in m
thickness: 0.01
thickness: 0.01 # m
# mass in kg
mass: 0.05
mass: 0.2 # kg

wheel:
# x, y, z offset in m of wheel from center of robot
Expand All @@ -29,7 +31,7 @@ wheel:
# radius in m
radius: 0.0925
# thickness in m
thickness: 0.05
thickness: 0.04

# velocity in m/s
velocity:
Expand All @@ -39,16 +41,18 @@ wheel:
# gear_ratio: 0.003378378378378 # 1:296 (motor:wheel) - calculated based on value 1600 ticks per m
gear_ratio: 0.027027027027027
caster_wheel:
# x, y offset in m of caster wheel from center of chassis
offset: [0.5, 0.1]
radius: 0.0925
# x, y offset in m of caster wheel from center of base link
# z is calculated based on the radius of the wheel and it's offset
offset: [0.35, 0.1]
radius: 0.05
mass: 0.05

gps:
antenna:
# x, y, z offset in m of gps antenna from center of chassis
offset: [0.3, 0.0, 0.2]
# x, y, z offset in m of gps antenna from center of base_link
offset: [0.32, 0.0, 0.1]

battery:
empty_voltage: 25.0
full_voltage: 28.5
imu:
chip:
# x, y, z offset in m of gps antenna from center of chassis
offset: [0.0, 0.0, 0.0] # m
19 changes: 2 additions & 17 deletions src/openmower/description/gps.xacro
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,13 @@
<joint name="gps_joint" type="fixed">
<parent link="base_link"/>
<child link="gps"/>
<origin xyz="0.3 0 0.05" rpy="0 0 0"/>
<origin xyz="${robot['gps']['antenna']['offset'][0]} ${robot['gps']['antenna']['offset'][1]} ${robot['gps']['antenna']['offset'][2]}" rpy="0 0 0"/>
</joint>

<link name="gps">
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<box size="0.08 0.08 0.04"></box>
</geometry>
</collision>

<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<box size="0.08 0.08 0.04"></box>
</geometry>
<material name="black"/>
</visual>

<sensor name="navsat_sensor" type="navsat">
<always_on>1</always_on>
<update_rate>30</update_rate>
<update_rate>5</update_rate>
<topic>gps</topic>
</sensor>
</link>
Expand Down
16 changes: 1 addition & 15 deletions src/openmower/description/imu.xacro
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,10 @@
<joint name="imu_joint" type="fixed">
<parent link="base_link"/>
<child link="imu"/>
<origin xyz="0.5 0 0.05" rpy="0 0 0"/>
<origin xyz="${robot['imu']['chip']['offset'][0]} ${robot['imu']['chip']['offset'][1]} ${robot['imu']['chip']['offset'][2]}" rpy="0 0 0"/>
</joint>

<link name="imu">
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<box size="0.08 0.08 0.04"></box>
</geometry>
</collision>

<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<box size="0.08 0.08 0.04"></box>
</geometry>
<material name="red"/>
</visual>
</link>

<gazebo reference="imu">
Expand Down
2 changes: 1 addition & 1 deletion src/openmower/description/robot.urdf.xacro
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<xacro:include filename="robot_core.xacro" />
<xacro:include filename="gps.xacro" />
<xacro:include filename="imu.xacro" />
<xacro:include filename="camera.xacro" />
<!-- <xacro:include filename="camera.xacro" />-->

<xacro:if value="$(arg use_ros2_control)">
<xacro:include filename="ros2_control.xacro" />
Expand Down
16 changes: 8 additions & 8 deletions src/openmower/description/robot_core.xacro
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@
<xacro:property name="wheel_offset_x" value="${robot['wheel']['offset'][0]}"/>
<xacro:property name="wheel_offset_y" value="${robot['wheel']['offset'][1]}"/>
<xacro:property name="wheel_offset_z" value="${robot['wheel']['offset'][2]}"/>
<xacro:property name="caster_wheel_radius" value="${robot['caster_wheel']['mass']}"/>
<xacro:property name="caster_wheel_radius" value="${robot['caster_wheel']['radius']}"/>
<xacro:property name="caster_wheel_mass" value="${robot['caster_wheel']['mass']}"/>
<xacro:property name="caster_wheel_offset_x" value="${robot['caster_wheel']['offset'][0]}"/>
<xacro:property name="caster_wheel_offset_y" value="${robot['caster_wheel']['offset'][1]}"/>
<xacro:property name="caster_wheel_offset_z" value="${wheel_offset_z - wheel_radius + caster_wheel_radius*2}"/>
<xacro:property name="caster_wheel_offset_z" value="${wheel_offset_z - wheel_radius + caster_wheel_radius}"/>

<material name="white">
<color rgba="1 1 1 1" />
Expand Down Expand Up @@ -192,7 +192,7 @@
<!-- LEFT CASTER WHEEL LINK -->

<joint name="left_caster_wheel_joint" type="fixed">
<parent link="chassis"/>
<parent link="base_link"/>
<child link="left_caster_wheel"/>
<origin xyz="${caster_wheel_offset_x} ${caster_wheel_offset_y} ${caster_wheel_offset_z}"/>
</joint>
Expand All @@ -203,7 +203,7 @@
<geometry>
<sphere radius="${caster_wheel_radius}"/>
</geometry>
<material name="white"/>
<material name="black"/>
</visual>
<collision>
<geometry>
Expand All @@ -216,15 +216,15 @@
</link>

<gazebo reference="left_caster_wheel">
<material>Gazebo/White</material>
<material>Gazebo/Black</material>
<mu1 value="0.001"/>
<mu2 value="0.001"/>
</gazebo>

<!-- RIGHT CASTER WHEEL LINK -->

<joint name="right_caster_wheel_joint" type="fixed">
<parent link="chassis"/>
<parent link="base_link"/>
<child link="right_caster_wheel"/>
<origin xyz="${caster_wheel_offset_x} ${-caster_wheel_offset_y} ${caster_wheel_offset_z}"/>
</joint>
Expand All @@ -235,7 +235,7 @@
<geometry>
<sphere radius="${caster_wheel_radius}"/>
</geometry>
<material name="white"/>
<material name="black"/>
</visual>
<collision>
<geometry>
Expand All @@ -248,7 +248,7 @@
</link>

<gazebo reference="right_caster_wheel">
<material>Gazebo/White</material>
<material>Gazebo/Black</material>
<mu1 value="0.001"/>
<mu2 value="0.001"/>
</gazebo>
Expand Down

0 comments on commit 94a9f5f

Please sign in to comment.