Ramudroid is an ingeniously build robot to clean outdoors and alleys inspired by Bharat Swachhata Abhiyaan . Read more
Prototype in Development
Stages include, assembly of frame and wheels , attaching bin and equalising weight distribution , adding circuits for drivers , relays , micro processors and controllers . Finally attaching power sources – solar panel and a standby battery for the micro controller so that it can communicate remotely without any solar power too.
Frame and wheel
Side view of Robotsolar panel mounted
Algorithm Enhancements
Exprimentation with Obstruction Detection .
Ultrasonic senors – primitive
LiDar – depth sending
Steroscopic vision – dual camras
train model to idnetify walls, poles , tree , tyres
Experimentation to find if tray is full and Stop Operation , retreat to dumping point
Tray Weight reaching threshold
Marker point detction
Pause operation and take Shelter in Rain
Rain sensors
Equipment Cost
Power And Charge Devices
Solar Panel MicroSun MS 12v 60 WP – 2500 INR
Solar charger Controller – 600 INR
Battery 11.1 V 2200 mAh – 500 INR
Frame and Motion Assembly
Wheels 10 cm diameter – 50 INR x 4 ie 200 INR
Tray – 400 INR
Frame Assembly – 1000 INR
Arduino to control Motors Drivers – 500 INR
Motor Driver – 300 INR
LCD display – 200 INR
Electronics , Communicating modules and Sensors
Raspberry Pi Moddel B+/ 4 -2700 INR
GPS module – 700 INR
GSM module – 1400 INR
Camera 5 MP Board Module – 450 INR
Total Cost to Develop – 12000 INR
Working Principle
The robot is divided into 2 parts – Cleaning Unit and driving unit
Driving Unit
Consists of 4 wheel to drive the setup . Wheels must be tightly fixed into position to prevent them from tilting, spreading outwards and imbalancing the load. 2 rear controller by 12 V 1 amp DC motors with 300 RPM and 2 front free wheels. Motors are conneted to Arduino for receving command for start , stop , left or right navigation.
There are three input pins for each motor, including Input1 (IN1), Input2 (IN2), and Enable1 (EN1) for Motor1 and Input3, Input4, and Enable2 for Motor2.
IN 1
IN2
Motor
0
0
Brake
1
0
Forward
0
1
Backward
1
1
Move
Cleaning Unit
Uses 3 tough bristled brushes controlled by 3 5V DC gear motors with 60 RPM. The arrangement of the brushes is such that the bottom 2 brushes use clockwise and anticlockwise motion outwards to pull in the litter and push up with the flow of the air and bristles of the brush. The third brush combs the collected into the collector tray. The tray is attached to weight control system to stop operations when critical weight is reached to prevent overloading the robot
Solar specification
Maximum Power (Pmax) – 60 Wp
Voltage at Maximum Power (Vmpp) – 18.1 V
Current at Maximum Power (Impp) – 3.32 A
Open Circuit Voltage (Voc) – 22.32 V
Short Circuit Current (Isc) – 3.63 A
Standard Test Conditions (STC): air mass AM 1.5, irradiance 1000W/m2, cell Temperature 25°C
Maximum System Voltage 1000 V
Electrical Data at NOCT
Temperature – 47±2 °C
Nominal Operating Cell Temperature (NOCT): 800W/m2, AM 1.5, windspeed 1m/s,ambient temperature 20°C
Solar panel weight – 5kg with annodixed alumium frame , 3 kg without the frame with just the toughened texture glass on panel
Frame and wheels – 2kg
Accessories – 1 kg
Garbage holding capacity – 2 kg
Total Weight of the Robot : maximum upto 10Kg
Scenarios
Good Sunlight scenario : This 12 Volt solar panel provide about 2.5 Amps of current on average during daytime. In such a situtaion it is directly used to drive the machine’s motors for wheels and brushes and electrical components such as PI and arduino. In no motion of rest conditions the genrated power is used to charge the attached backup battery.
Shady / evening / morning scenario : When the panel is not receiving direct or strong sunlight, the power generated is less hence not sufficient to take the load of driving the wheels for movement. Hence is the power falls below a certain prespecified threhold, the current is drawn from battery backup.
Night / No sunlight Scenario : battery is used to power the setup. panel can be dismounted to lower the load.
Contributing to Ramudroid Project or Reuse
It is deigned and developed as an MIT licensed Opensourced product by a bunch of developers and engineers in Bangalore for greater good.
Asterisk is a framework or toolkit designed for VOIP systems . It can support Enterprise communication systems like PBXs, call distributors, VoIP gateways , conference bridges etc . It is open source and free to use . It is developed in C and runs in linux .
Technically , Asterisk has protocol support for many telephony technologies and protocols such as SIP , H323 . It can connect old PSTN or copper line and VOIP .
Asterisk is a framework for building multi-protocol, real-time communications applications and solutions. Asterisk is to realtime voice and video applications as what Apache is to web applications
– asterisk.org
Combine the SIP channel, the PSTN interface channel and some Dialplan script and you have a gateway.
Change the Dialplan to drop calls into a ConfBridge session and you have a conference server.
Alter it once more to route calls into voice mailboxes and you have a voicemail server.
Tie it all together and you have an amazingly powerful phone system.
Asterisk as a Central signalling SIP application Server in VoIP Platform
Due to the wide array of call flow processing and media, channel, bridge management module support of asterisk, it is ideal to sit at the core of a VoIP of Communication platform solution. A WebRTC capable CPaaS overall architecture with inbound and outbound Kamailio proxy and central asterisk signaller and integration to telecom service providers over SIP trunks can be described as below
I am using the latest release candidate at the time writing this article asterisk-16.2.0-rc1-patch.tar.gz
Some external Dependencies apt-get install subversion
Then install the source dependencies
sudo su contrib/scripts/get_mp3_source.sh
This will install mp3 related programs such as
A addons/mp3 A addons/mp3/decode_ntom.c A addons/mp3/interface.c A addons/mp3/MPGLIB_README A addons/mp3/common.c A addons/mp3/huffman.h A addons/mp3/tabinit.c A addons/mp3/Makefile A addons/mp3/README A addons/mp3/decode_i386.c A addons/mp3/dct64_i386.c A addons/mp3/MPGLIB_TODO A addons/mp3/mpg123.h A addons/mp3/layer3.c A addons/mp3/mpglib.h Exported revision 202.
Actual dependencies will be installed via install_prereq script
contrib/scripts/install_prereq install
Output snippet
Run configure which will create scripts for next processes
Asterisk 16.2.0-rc1, Copyright (C) 1999 - 2018, Digium, Inc. and others. Created by Mark Spencer markster@digium.com
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public License version 2 and other licenses; you are welcome to redistribute it under certain conditions. Type 'core show license' for details.
Connected to Asterisk 16.2.0-rc1 currently running on ip-172-31-45-26 (pid = 13388)
ip-172-31-45-26*CLI>
Register sip phones with asterisk PBX and make / receive calls
To make calls among users, we need to configure channel driver with sip support . Using the sip protcol the phones within the enterprise will be able to send call signals out to one another. Open pjsip.conf
and set the values in sip softphone like zoiper , register with provided creds
registering sip phone zoiper with newly created asterisk PBX
If the registration creds used are not matching with the ones defines in pjsip.conf then REGISTER request failed message is displayed
Request 'REGISTER' from '' failed for 'x.x.x.x:18475' (callid: hp8iN6oWLRdER4zvEBdiUg..) - No matching endpoint found
On correct creds used the server prints traces such as
-- Added contact 'sip:1113@x.x.x.x:44312;transport=UDP;rinstance=b8aceff08623b51e' to AOR '1113' with expiration of 60 seconds
== Endpoint 1113 is now Reachable
-- Removed contact 'sip:1113@x.x.x.x:44312;transport=UDP;rinstance=b8aceff08623b51e' from AOR '1113' due to request
== Contact 1113/sip:1113@x.x.x.x:44312;transport=UDP;rinstance=b8aceff08623b51e has been deleted
== Endpoint 1113 is now Unreachable
-- Added contact 'sip:1113@x.x.x.x:18475;transport=UDP;rinstance=5af431512ae0af3a' to AOR '1113' with expiration of 60 seconds
== Endpoint 1113 is now Reachable
Alternatively one can also create new sip endpoints
exten=>6124,1,Verbose(2,The channel name is ${CHANNEL})
same => n,Verbose(2,The unique id is ${UNIQUEID})
same => n,Verbose(2,The caller id is ${CALLERID(all)})
same => n,Verbose(2,The datetime is ${DATETIME})
same => n,Verbose(2,The timestamp is ${TIMESTAMP})
same => n,Verbose(2,The context is ${CONTEXT})
same => n,Verbose(2,The SYSTEMNAME is ${SYSTEMNAME})
same => n,Verbose(2,The PRIORITY is ${PRIORITY})
same => n,Verbose(2,The CHANNEL is ${CHANNEL})
settings varaibles and Say
exten=>6009,1,Verbose("------------ Set variable -------")
same => n,Set(COUNT=3)
same => n,SayNumber(${COUNT})
same => n,Set(${COUNT}=10)
same => n,SayNumber(${COUNT})
Simple Voicemail ( also need configuration on voicemail.conf)
exten => 1235,1,VoiceMail(1235,u)
PBX and applications
PBX cores settings
Version: 16.2.0-rc1
Build Options: BUILD_NATIVE, OPTIONAL_API
Maximum calls: Not set
Maximum open file handles: 1024
Root console verbosity: 5
Current console verbosity: 5
Debug level: 0
Maximum load average: 0.000000
Minimum free memory: 0 MB
Startup time: 10:27:35
Last reload time: 10:27:35
System: Linux/4.15.0-1021-aws built by root on x86_64 2019-02-11 11:48:29 UTC
System name:
Entity ID: 0e:28:c0:44:39:5e
PBX UUID: a2df96bb-6d1a-4f64-a953-cf02030e9851
Default language: en
Language prefix: Enabled
User name and group: /
Executable includes: Disabled
Transcode via SLIN: Enabled
Transmit silence during rec: Disabled
Generic PLC: Disabled
Generic PLC on equal codecs: Disabled
Min DTMF duration:: 80
Cache media frames: Enabled
RTP use dynamic payloads: 1
RTP dynamic payload types: 35-63,96-127
Subsystems
Manager (AMI): Disabled
Web Manager (AMI/HTTP): Disabled
Call data records: Enabled
Realtime Architecture (ARA): Disabled
Directories
Configuration file: /etc/asterisk/asterisk.conf
Configuration directory: /etc/asterisk
Module directory: /usr/lib/asterisk/modules
Spool directory: /var/spool/asterisk
Log directory: /var/log/asterisk
Run/Sockets directory: /var/run/asterisk
PID file: /var/run/asterisk/asterisk.pid
VarLib directory: /var/lib/asterisk
Data directory: /var/lib/asterisk
ASTDB: /var/lib/asterisk/astdb
IAX2 Keys directory: /var/lib/asterisk/keys
AGI Scripts directory: /var/lib/asterisk/agi-bin
Asterisk Applications
Some of the application are listed below . Note that this is not an extensive list as more application are added and old ones are removed every minor release .
AddQueueMember: Dynamically adds queue members. AlarmReceiver: Provide support for receiving alarm reports from a burglar or fire alarm panel. AMD: Attempt to detect answering machines. Answer: Answer a channel if ringing. AttendedTransfer: Attended transfer to the extension provided and TRANSFER_CONTEXT BackGround: Play an audio file while waiting for digits of an extension to go to. BackgroundDetect: Background a file with talk detect. BlindTransfer: Blind transfer channel(s) to the extension and context provided Bridge: Bridge two channels. BridgeAdd: Join a bridge that contains the specified channel. BridgeWait: Put a call into the holding bridge. Busy: Indicate the Busy condition. ChanSpy: Listen to a channel, and optionally whisper into it. ConfBridge: Conference bridge application. Dial: Attempt to connect to another device or endpoint and bridge the call. Dictate: Virtual Dictation Machine. Echo: Echo media, DTMF back to the calling party ExtenSpy: Listen to a channel, and optionally whisper into it. ExternalIVR: Interfaces with an external IVR application. FollowMe: Find-Me/Follow-Me application. ForkCDR: Forks the current Call Data Record for this channel. Hangup: Hang up the calling channel. Log: Send arbitrary text to a selected log level. MailboxExists: Check to see if Voicemail mailbox exists. Milliwatt: Generate a Constant 1004Hz tone at 0dbm (mu-law). MixMonitor: Record a call and mix the audio during the recording. Use of StopMixMonitor is required to guarantee the audio file is available for processing during dialplan execution. Monitor: Monitor a channel. Morsecode: Plays morse code. MusicOnHold: Play Music On Hold indefinitely. NoCDR: Tell Asterisk to not maintain a CDR for this channel. NoOp: Do Nothing (No Operation). Originate: Originate a call. Park: Park yourself. PauseMonitor: Pause monitoring of a channel. PauseQueueMember: Pauses a queue member. Pickup: Directed extension call pickup. Playback: Play a file. PlayTones: Play a tone list. PrivacyManager: Require phone number to be entered, if no CallerID sent Proceeding: Indicate proceeding. Progress: Indicate progress. Queue: Queue a call for a call queue. Read: Read a variable. SendImage: Sends an image file. SendText: Send a Text Message on a channel. SendURL: Send a URL. Set: Set channel variable or function value. SetAMAFlags: Set the AMA Flags. SMS: Communicates with SMS service centres and SMS capable analogue phones. SoftHangup: Hangs up the requested channel. SpeechActivateGrammar: Activate a grammar. SpeechBackground: Play a sound file and wait for speech to be recognized. SpeechCreate: Create a Speech Structure. SpeechDeactivateGrammar: Deactivate a grammar. SpeechDestroy: End speech recognition. SpeechLoadGrammar: Load a grammar. SpeechProcessingSound: Change background processing sound. SpeechStart: Start recognizing voice in the audio stream. SpeechUnloadGrammar: Unload a grammar. StackPop: Remove one address from gosub stack. StartMusicOnHold: Play Music On Hold. Stasis: Invoke an external Stasis application. StopMixMonitor: Stop recording a call through MixMonitor, and free the recording’s file handle. StopMonitor: Stop monitoring a channel. StopMusicOnHold: Stop playing Music On Hold. StopPlayTones: Stop playing a tone list. StreamEcho: Echo media, up to ‘N’ streams of a type, and DTMF back to the calling party VMSayName: Play the name of a voicemail user VoiceMail: Leave a Voicemail message. Record: Record to a file. RemoveQueueMember: Dynamically removes queue members. ResetCDR: Resets the Call Data Record. RetryDial: Place a call, retrying on failure allowing an optional exit extension. Return: Return from gosub routine. Ringing: Indicate ringing tone. SayNumber: Say Number. SMS: Communicates with SMS service centres and SMS capable analogue phones. SoftHangup: Hangs up the requested channel. SpeechActivateGrammar: Activate a grammar. SpeechBackground: Play a sound file and wait for speech to be recognized. SpeechCreate: Create a Speech Structure. SpeechDeactivateGrammar: Deactivate a grammar. SpeechDestroy: End speech recognition. SpeechLoadGrammar: Load a grammar. SpeechProcessingSound: Change background processing sound. SpeechStart: Start recognizing voice in the audio stream. StartMusicOnHold: Play Music On Hold. Stasis: Invoke an external Stasis application. StopMixMonitor: Stop recording a call through MixMonitor, and free the recording’s file handle. StopMonitor: Stop monitoring a channel. StopMusicOnHold: Stop playing Music On Hold. StopPlayTones: Stop playing a tone list. StreamEcho: Echo media, up to ‘N’ streams of a type, and DTMF back to the calling party System: Execute a system command. VoiceMail: Leave a Voicemail message. VoiceMailMain: Check Voicemail messages. VoiceMailPlayMsg: Play a single voice mail msg from a mailbox by msg id. Wait: Waits for some time. Zapateller: Block telemarketers with SIT.
To connect video based webrtc endpoints ensure you load the codecs and also libsrtp . Overwrite the selective conf in this folders with the existing conf of asterisk to run a basic webrtc video call . These were tested with jssip on asterisk v17 with res_pjsip.
confirm using pjsip – since chan_sip is depriciate. Confirm that yo are not using chan_sip and instead ensure using re_pjsip
module unload chan_sip
module show like res_pjsip
If pjssip is not found load it wither form menuselect or by using cli load module command .
use the “ast_tls_cert” script in the “contrib/scripts” Asterisk source directory to make a self-signed certificate authority and an Asterisk certificate.
sh ast_tls_cert.sh -C localhost -O "altanai" -d .
after creating the self signed keys start the server
asterisk -vvvvvvc
channels
Peer User/ANR Call ID Format Hold Last Message Expiry Peer
10.10.10.10 1060 e8ae107f-ce90-2 (ulaw) No Rx: ACK 1060
Codecs – check for the webrtc supported audio and video codesc in the list , if not found install the modules and reload.
31 image png png (PNG Image)
6 audio g726 g726 (G.726 RFC3551)
4 audio alaw alaw (G.711 a-law)
2 audio g723 g723 (G.723.1)
20 audio speex speex (SpeeX)
21 audio speex speex16 (SpeeX 16khz)
22 audio speex speex32 (SpeeX 32khz)
24 audio g722 g722 (G722)
25 audio siren7 siren7 (ITU G.722.1 (Siren7, licensed from Polycom))
32 video h261 h261 (H.261 video)
33 video h263 h263 (H.263 video)
8 audio adpcm adpcm (Dialogic ADPCM)
36 video h265 h265 (H.265 video)
44 audio silk silk8 (SILK Codec (8 KHz))
45 audio silk silk12 (SILK Codec (12 KHz))
46 audio silk silk16 (SILK Codec (16 KHz))
47 audio silk silk24 (SILK Codec (24 KHz))
28 audio g719 g719 (ITU G.719)
34 video h263p h263p (H.263+ video)
35 video h264 h264 (H.264 video)
19 audio g729 g729 (G.729A)
9 audio slin slin (16 bit Signed Linear PCM)
10 audio slin slin12 (16 bit Signed Linear PCM (12kHz))
11 audio slin slin16 (16 bit Signed Linear PCM (16kHz))
12 audio slin slin24 (16 bit Signed Linear PCM (24kHz))
13 audio slin slin32 (16 bit Signed Linear PCM (32kHz))
14 audio slin slin44 (16 bit Signed Linear PCM (44kHz))
15 audio slin slin48 (16 bit Signed Linear PCM (48kHz))
16 audio slin slin96 (16 bit Signed Linear PCM (96kHz))
17 audio slin slin192 (16 bit Signed Linear PCM (192kHz))
3 audio ulaw ulaw (G.711 u-law)
18 audio lpc10 lpc10 (LPC10)
27 audio testlaw testlaw (G.711 test-law)
43 audio none none (<Null> codec)
42 image t38 t38 (T.38 UDPTL Fax)
39 video vp9 vp9 (VP9 video)
38 video vp8 vp8 (VP8 video)
5 audio gsm gsm (GSM)
37 video mpeg4 mpeg4 (MPEG4 video)
23 audio ilbc ilbc (iLBC)
40 text red red (T.140 Realtime Text with redundancy)
41 text t140 t140 (Passthrough T.140 Realtime Text)
29 audio opus opus (Opus Codec)
30 image jpeg jpeg (JPEG image)
7 audio g726aal2 g726aal2 (G.726 AAL2)
1 audio codec2 codec2 (Codec 2)
26 audio siren14 siren14 (ITU G.722.1 Annex C, (Siren14, licensed from Polycom))
Webrtc clients
Here is a succesful run using PJSIP as the webrtc client to communicated to another pjsip client via Asterisk server .
Note that all signalling and media isi getting proxied via the Asterisk server signalling and media plane which is in contrast to the peer to peer nature of WebRTC
Register with SIP Registrar on AsteriskSpecify the contact URI as the Asterisk server tooIncoming CallWebRTC Call in progress via asterisk SIP and Media ServerSignalling and Media Proxy Via Asterisk