NVIDIA-AI-IOT / jetracer

An autonomous AI racecar using NVIDIA Jetson Nano
MIT License
1.07k stars 321 forks source link

the study of collision avoidance about Jetracer #73

Closed joker-wutong closed 2 years ago

joker-wutong commented 4 years ago

Has anyone experimented with obstacle avoidance projects on jetracer, just like the collision_avoidance project on jetbot

jaybdub commented 4 years ago

Hi @joker-wutong ,

Thanks for reaching out!

We actually did play with this a bit, but given the dynamics of JetRacer, the challenge is a bit different. Here's a few i've experimented with

Method 1 - Hard stop

You could certainly do an image classification approach with JetRacer to accomplish something like stop / go but you'd likely want to leave a larger collision buffer, since JetRacer moves faster. This may be a good safety net for any other approach.

Method 2 - Soft Stop

Another approach is to actually solve this by just redefining how you collect data using JetRacer's road-following example.

For example, say you want to follow a strict path and slow down based on how close you are to any object in that path. You could then define JetRacer's target point as the farthest point along the desired path up until an object intersects the path. Because the camera is at a fixed angle and position from the ground plane, you could later determine how far you are away from the object based on the coordinates of that point in the image.

Method 3 - Go Around

Similar to method 2, but re-defining in yet another way. If you wanted to "avoid" objects, you could just re-imagine the ideal trajectory as one that moves around the object. You then set the target point as one as far along that path such that if you were to travel straight to the target point, you would not hit the object.

Notes

For any of these methods it would help to have the speed of the vehicle for a good controller. But a heuristic might get you pretty far. I've found these approaches actually produce some pretty impressive results without adding much complexity.

Please let me know if this helps or you have any questions.

Best, John

joker-wutong commented 4 years ago

Thank you very much for your ideas, I will do it, if I encounter any problems, I will post them

------------------ 原始邮件 ------------------ 发件人: "NVIDIA-AI-IOT/jetracer" <notifications@github.com>; 发送时间: 2020年9月1日(星期二) 下午5:58 收件人: "NVIDIA-AI-IOT/jetracer"<jetracer@noreply.github.com>; 抄送: "吴通"<2570868576@qq.com>;"Mention"<mention@noreply.github.com>; 主题: Re: [NVIDIA-AI-IOT/jetracer] the study of collision avoidance about Jetracer (#73)

Hi @joker-wutong ,

Thanks for reaching out!

We actually did play with this a bit, but given the dynamics of JetRacer, the challenge is a bit different. Here's a few i've experimented with

Method 1 - Hard stop

You could certainly do an image classification approach with JetRacer to accomplish something like stop / go but you'd likely want to leave a larger collision buffer, since JetRacer moves faster. This may be a good safety net for any other approach.

Method 2 - Soft Stop

Another approach is to actually solve this by just redefining how you collect data using JetRacer's road-following example.

For example, say you want to follow a strict path and slow down based on how close you are to any object in that path. You could then define JetRacer's target point as the farthest point along the desired path up until an object intersects the path. Because the camera is at a fixed angle and position from the ground plane, you could later determine how far you are away from the object based on the coordinates of that point in the image.

Method 3 - Go Around

Similar to method 2, but re-defining in yet another way. If you wanted to "avoid" objects, you could just re-imagine the ideal trajectory as one that moves around the object. You then set the target point as one as far along that path such that if you were to travel straight to the target point, you would not hit the object.

Notes

For any of these methods it would help to have the speed of the vehicle for a good controller. But a heuristic might get you pretty far. I've found these approaches actually produce some pretty impressive results without adding much complexity.

Please let me know if this helps or you have any questions.

Best, John

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.